基于openCV的png读取透明图片

    近一段时间在做图像处理方面的内容,基于openCV做了一些东西,其中遇到一些问题,如题就是其中一个。

    最初的叠加使用了openCV提供的cvAddWeighted 函数,却发现不是我想要的效果,原来png图片透明的地方并没有透明,而且更奇怪的是,png图片显示出来也完全不是原来的样子,像这样:

  

    查了文档才知道,原来openCV在读取图片的时候,默认是3通道的,也就是把alpha通道干掉了,实在让我汗颜。读取png图片的时候这样就可以了:

                   cvLoadImage(imageName, CV_LOAD_IMAGE_UNCHANGED),

    对比下之前的默认设置,你会发现nChannels变为了4,另外imageData也多了一个通道的数据,png图像读取完成了。但是遗憾的是,在使用cvShowImage显示图像时,显示的还是右图那个很丑陋的图像,这个实在无法接受,找了半天没有解决方案,看来openCV真的不想支持,这个不科学。由于不影响后面的叠加,我暂时接受这个设定。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值