Opencv关于PNG图像的load和save问题
2014-01-20 14:24
309 查看
Opencv作为开源的免费软件,bug和功能上都有问题(可以用Intel的ipp来代替)
比如png带透明度的文件,查资料说,Opencv不支持png的第4个通道,即透明度通道。
有的说要修改opencv里png解码函数然后重新编译实现对透明通道的支持,但这方法很麻烦,ios、android、windows下都要重新编译。
抱着试试的想法,实验了一下,貌似解决了问题:
1、cvloadimage载入png文件时,默认的第2个参数是1,即CV_LOAD_IMAGE_COLOR,生成的iplimage对象的channel数是3,而不是4,丢失了第4通道。需要改为cvloadimage(pbuf,-1)得到的iplimage对象就是4个channel;
2、opencv的cvshowimage函数,显示对应的iplimage对象还是错误的,可以忽略不管丫的。
3、在对生成的iplimage对象处理时,记得要处理第4个通道的数据,比如得到每个像素点的cvscalar对象a,要对a.val[3]数据进行处理!
4、保存时,可以直接使用cvsaveimage函数保存为png文件,不需要考虑第三个参数的设置。
比如png带透明度的文件,查资料说,Opencv不支持png的第4个通道,即透明度通道。
有的说要修改opencv里png解码函数然后重新编译实现对透明通道的支持,但这方法很麻烦,ios、android、windows下都要重新编译。
抱着试试的想法,实验了一下,貌似解决了问题:
1、cvloadimage载入png文件时,默认的第2个参数是1,即CV_LOAD_IMAGE_COLOR,生成的iplimage对象的channel数是3,而不是4,丢失了第4通道。需要改为cvloadimage(pbuf,-1)得到的iplimage对象就是4个channel;
2、opencv的cvshowimage函数,显示对应的iplimage对象还是错误的,可以忽略不管丫的。
3、在对生成的iplimage对象处理时,记得要处理第4个通道的数据,比如得到每个像素点的cvscalar对象a,要对a.val[3]数据进行处理!
4、保存时,可以直接使用cvsaveimage函数保存为png文件,不需要考虑第三个参数的设置。
相关文章推荐
- 关于opencv中图像的通道数(channels)问题
- opencv关于imread读不到图像的问题
- 关于opencv在代码正确的情况下,无法显示图像的问题。
- 关于opencv中图像的通道数问题
- 关于opencv摄像头图像显示 经常出现select timeout的问题
- 第三十二篇:关于opencv中图像的通道的问题
- 关于opencv中imshow()函数在VS中调用不显示图像的问题
- 关于OpenCV图像操作的默认参数问题
- 关于OpenCV图像操作的默认参数问题
- 关于opencv中图像的通道数问题
- opencv关于图像处理坐标的问题
- 关于Doxygen中的中文乱码问题 及 无法用dot生成png图像问题
- 2014年3月29日 遇到的关于opencv将图像转换为数组的几个问题 包含cvmat 到mat转换
- 关于android 图像格式问题
- 关于opencv打开摄像头成灰色问题
- 关于Not allowed to load local resource的问题
- OpenCV图像数据字节对齐问题
- 关于opencv2.4.9和VS2013在windows7下无法打开摄像头的问题的扯淡解决办法
- 关于OpenCV的配置问题
- 关于android视频播放开发中 播放视频只有声音没有图像的问题解决方案