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*图像指针.
读入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*图像指针.
相关文章推荐
- opecncv不同深度图像的转换(IPL_DEPTH_8U和IPL_DEPTH_32F)
- CV_Assert(myImage.depth() == CV_8U); // 仅接受uchar图像
- opecncv不同深度图像的转换(IPL_DEPTH_8U转IPL_DEPTH_32F)
- opecncv不同深度图像的转换(IPL_DEPTH_8U和IPL_DEPTH_32F)
- 关于opencv里,imshow和cvShowImage之后不显示的问题
- Qt4: Show an image in your widget – 在Qt里面显示图像
- matlab 图像显示 命令 image imshow
- opecncv不同深度图像的转换(IPL_DEPTH_8U和IPL_DEPTH_32F)
- 再学 GDI+[81]: TGPImage(1) - 显示图像
- ImageView显示图像
- GDI+ 学习记录(26): 显示图像 - Image
- Opencv中的cvShowImage,cvSaveImage和cvWaitkey函数
- OpenCV Show Image cvShowImage() 使用方法
- 如何在ImageView组件中显示图像的一部分
- 在MFC中显示OpenCV的Mat图像矩阵 ShowMatImgToWnd(GetDlgItem(IDC_ShowImg) , matFrame);
- ImageKit使用教程:数据库中图像数据的显示和检索
- cvReleaseImage把图像怎么样了?
- GDI+ 学习记录(26): 显示图像 - Image
- Silverlight 控件中显示图像 Image.Source 属性 需要注意的地方
- cvShowImage( )函数