2013-01-10 32 views
0

使用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

啊,完美。這解釋了一切。非常感謝。 – ThatSnail