CIMG дисплей рендеринга черный

Использование CImg; Я буду держать это быстро и просто.

CImg<float> i = *spectralImages->at(currentImage);
disp.display(i);
float* f = i.data();

disp отображает черное изображение, несмотря на тот факт, что при переходе через * (f), * (f + 1), * (f + 2) и т. д. происходит поиск правильных чисел (255,0, 245,0 и т. д.)

Я работал над этим весь день. Есть ли причуды с CImg, которые мне не хватает?

РЕДАКТИРОВАТЬ:
Сохранение файла в виде BMP, похоже, дает правильный результат, поэтому есть проблема с его отрисовкой.

0

Решение

Если ваше изображение CImg содержит только одно значение или несколько равных значений, дисплей по умолчанию будет отображать их в виде черных изображений из-за нормализации, примененной к значениям пикселей для дисплея.
Поскольку CImg может управлять изображениями любого типа (в том числе с плавающей запятой), он всегда нормализует значения пикселей в [0,255] для дисплея (он, конечно, не изменяет значение пикселей в вашем объекте, он просто нормализует их внутренне для его отображение).
Таким образом, если ваше изображение имеет значения в один пиксель, нормализация всегда будет иметь значение «0», а следовательно, и черное изображение.

Это означает, что вы, вероятно, не создавали свой CImgDisplay disp с правильным аргументом нормализации пикселя (по умолчанию он включен).
disp должен быть построен так:

CImgDisplay disp(100,100,"my display",0);

отключить стандартную нормализацию значений пикселей.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector