cimg显示渲染黑色

时间:2013-01-10 02:01:55

标签: c++ cimg

使用CImg;我会快速而简单地保持这一点。

CImg<float> i = *spectralImages->at(currentImage);
disp.display(i);
float* f = i.data();
尽管踩过*(f),*(f + 1),*(f + 2)等正在检索正确的数字(255.0,245.0等),但是p显示黑色图像< / p>

我一整天都在努力。我错过了CImg的怪癖吗?

修改 将文件保存为BMP似乎可以得到正确的结果,因此绘制它只是一个问题。

1 个答案:

答案 0 :(得分:0)

如果您的CImg图像仅包含单个值或几个相等的值,则默认显示将其显示为黑色图像,因为应用于显示的像素值的标准化。 由于CImg能够管理任何类型的图像(包括浮点值),它总是将[0,255]中的像素值标准化为显示(当然,它不会改变对象中的像素值,它只是在内部将它们标准化为它的显示)。 因此,如果您的图像具有单个像素值,则归一化将始终为“0”,因此结果为黑色图像。

这意味着您可能没有使用正确的像素规范化参数构造CImgDisplay disp(默认情况下,它已启用)。 disp应该像这样构建:

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

禁用像素值的默认标准化。