242 static
void ConvertToRGBImage(const
void *_data,
243 unsigned int _width,
unsigned int _height,
Image &_output,
244 T _min =
std::numeric_limits<T>::max(),
245 T _max =
std::numeric_limits<T>::lowest(),
bool _flip = false)
247 unsigned int samples = _width * _height;
248 unsigned int bufferSize = samples *
sizeof(T);
251 memcpy(buffer.data(), _data, bufferSize);
260 for (
unsigned int i = 0; i < samples; ++i)
266 if (v > max && !
std::isinf(
static_cast<float>(v)))
268 if (v < min && !
std::isinf(
static_cast<float>(v)))
277 double range =
static_cast<double>(max - min);
280 unsigned int idx = 0;
281 for (
unsigned int j = 0; j < _height; ++j)
283 for (
unsigned int i = 0; i < _width; ++i)
285 auto v = buffer[idx++];
286 double t =
static_cast<double>(v - min) / range;
289 uint8_t r =
static_cast<uint8_t
>(255*t);
290 unsigned int outIdx = j * _width * 3 + i * 3;
291 outputRgbBuffer[outIdx] = r;
292 outputRgbBuffer[outIdx + 1] = r;
293 outputRgbBuffer[outIdx + 2] = r;
296 _output.SetFromData(outputRgbBuffer.data(), _width, _height, RGB_INT8);