OpenCv图像叠加时png图片的透明部分无法透明的解决办法

本文详细介绍了在使用OpenCV进行图像处理时,如何正确处理PNG图片的透明部分,确保在叠加过程中透明区域不会显示为不透明,从而在虚拟现实或摄像头应用中实现预期效果。
摘要由CSDN通过智能技术生成
        这一个月以来都在做虚拟现实的大作业,我们组想要做一个在摄像头读入的视频流中进行人脸识别并且在五官上添加物体这样一个程序。
        当然人脸识别什么的就用了网上现有的一些程序,我们要做的就是在画面中加载图片于特定的坐标上。
        关于如何叠加图片我参考了下面两篇文章,如果想做加水印、图片叠加相关代码的建议先看这个里面已经讲解的蛮清楚了: 
        http://www.cnblogs.com/mfryf/archive/2012/03/08/2385304.html 
        http://www.tuicool.com/articles/EvyEfq


         ***但是***存在一个问题,在第一篇文章下面的回复中也有人提到了,用背景透明的png图像的时候不能实现透明的效果,透明的部分现实的是白色的,png图像是用photoshop挖去背景得到的。经过我到处查资料什么的得出,这个结果的可能原因应该是版本的问题。2.4之后的opencv的imread函数不能显示第四个通道了(?这个结论存疑,我也是在别的文章中看到的)。
        然而我想cvshowimage()是可以显示四个通道的吧,但是iplimage和mat格式互相转换还有函数不通用也是有一些困难,这个尝试就失败了。
参考了很多地方的文章和代码都没有能够解决这个问题的办法,一时间有些头大了感觉可能这个作业没法达到需要的效果了……不过还好看别人的文章受到一些启发,就算版本不一样会存在一些问题,利用掩模的话应该也是可以解决的吧?然后抱着试一试的想法实验了下写了个小程序(基于上面文章中的代码改动了一下)。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值