这一个月以来都在做虚拟现实的大作业,我们组想要做一个在摄像头读入的视频流中进行人脸识别并且在五官上添加物体这样一个程序。
当然人脸识别什么的就用了网上现有的一些程序,我们要做的就是在画面中加载图片于特定的坐标上。
关于如何叠加图片我参考了下面两篇文章,如果想做加水印、图片叠加相关代码的建议先看这个里面已经讲解的蛮清楚了:
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格式互相转换还有函数不通用也是有一些困难,这个尝试就失败了。
参考了很多地方的文章和代码都没有能够解决这个问题的办法,一时间有些头大了感觉可能这个作业没法达到需要的效果了……不过还好看别人的文章受到一些启发,就算版本不一样会存在一些问题,利用掩模的话应该也是可以解决的吧?然后抱着试一试的想法实验了下写了个小程序(基于上面文