终于到了有实际应用的功能了,有2张图片,里面各有一个人脸,我的目的是比较这两个人脸的相似度,这里用到了facedetect的功能,还有图像转换,图像剪切,以及直方图的比较。具体流程是:
1。分别用facedetect功能将两张图片中的人脸检测出来
2。将人脸部分的图片剪切出来,存到两张只有人脸的图片里。
3。将这两张人脸图片转换成单通道的图像
4。使用直方图比较这两张单通道的人脸图像,得出相似度。
这里对图的要求还是比较高的,光线和姿势不能有差别,脸的垂直或者左右角度偏差就会影响比较,但和两张图片的大小关系不大,本人觉得较适合于证件照的对比。
下面是代码,其中haarcascade_frontalface_alt.xml是opencv里facedetect例子用的样本。 比较的是srcImage和targetImage对应的文件.
还有下面是IplImage和Mat混用,纯当熟悉这两个类了。
[cpp] view plaincopy
</pre><div class="dp-highlighter bg_cpp"><div class="bar"><div class="tools"><strong>[cpp]</strong> <a target=_blank title="view plain" class="ViewSource" href="http://blog.csdn.net/nicebooks/article/details/8175002#">view plain</a><a target=_blank title="copy" class="CopyToClipboard" href="http://blog.csdn.net/nicebooks/article/details/8175002#">copy</a><a target=_blank title="print" class="PrintSource" href="http://blog.csdn.net/nicebooks/article/details/8175002#">print</a><a target=_blank title="?" class="About" href="http://blog.csdn.net/nicebooks/article/det