我有一个类型6(双值,单通道)垫,数据范围从0到255.我可以使用以下代码打印出数据:
double* data = result.ptr<double>();
for(int i = 0; i < rows; i++)
for(int j = 0; j < cols; j++)
std::cout<<data[i*step+j]<<"\t";
这似乎完全正常 - 在0到255的范围内,以及我期望的大小。但是,当我尝试显示图像时:
imshow(window_name, result);
waitKey();
我只是得到一张白色图片。只是白色像素。没别了。
从文件中加载其他图像并在窗口中显示正常。
使用Windows 7,OpenCV 233
答案 0 :(得分:5)
cv::imshow以下列方式运作 -
你的矩阵位于第3类,其中imshow期望值在0和1之间,因此它将它乘以255.由于你的值已经在0到255之间,你得到了不想要的结果。因此,将0和1之间的像素标准化将起作用。
答案 1 :(得分:3)
如果您使用的是imshow
,则需要对浮点图像进行标准化,以使值介于0.0 - 1.0之间。我敢打赌你的值超过1.0,因此这些像素都设置为255,为你提供白色图像。