问题背景:
读入RGB图像(8bits)---->转换成灰度图像(8bits)---->转换成Float型(IPL_DEPTH_32F)--->后续处理
问题描述:
1、用cvShowImage显示8bits单通道灰度图像时可以正常显示;
2、用cvShowImage显示32bits float型单通道灰度图像时就出了问题,图像只有黑白两种颜色,没有灰色的,出现了严重失真,这就是没有正确显示;
问题原因:
如果图像是32位float型,cvShowImage会把像素值乘以255然后再与[0,255]的colormap结合起来显示图像,也就是说,原来32位folat型图像中值为0的像素被显示成黑色,值大于或等于1的像素被显示成白色,参看帮助文档:
解决办法:
转换成灰度图像(8bits)---->转换成Float型(IPL_DEPTH_32F)使用如下命令
cvCvtScale(gray8,gray32,1.0/255);
其中gray8是8bits灰度图像的IplImage*图像指针;
gray32是32bits float型灰度图像的IplImage*图像指针.