您的位置:首页 > 运维架构

cvShowImage显示IPL_DEPTH_32F图像

2014-03-13 12:17 253 查看
问题背景:

读入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的像素被显示成白色,参看帮助文档:

OpenCV2.4.8帮助文档

解决办法:

转换成灰度图像(8bits)---->转换成Float型(IPL_DEPTH_32F)使用如下命令

cvCvtScale(gray8,gray32,1.0/255);

其中gray8是8bits灰度图像的IplImage*图像指针;

gray32是32bits float型灰度图像的IplImage*图像指针.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OpenCV