OpenCV人脸检测(C++/Python)

之前一直觉得人脸检测是非常麻烦的,即使是用OpenCV麻烦到我都不敢去碰。这两天仔细看了下,如果只是调用opencv自带的分类器和函数的话,简直是简单。这不,正好最近也在学习Python索性就用C++和Python两种语言都实现一下。当然,我现在这个是最简单的版本。


步骤

调用opencv训练好的分类器和自带的检测函数检测人脸人眼等的步骤简单直接:
1. 加载分类器,当然分类器事先要放在工程目录中去。分类器本来的位置是在*\opencv\sources\data\haarcascades(harr分类器,也有其他的可以用,也可以自己训练)
2. 调用detectMultiScale()函数检测,调整函数的参数可以使检测结果更加精确。
3. 把检测到的人脸等用矩形(或者圆形等其他图形)画出来。


主要函数

这里面最主要的一个函数就是detectMultiScale()。文档中的解释如下:

1. image表示的是要检测的输入图像
2. objects表示检测到的人脸目标序列
3. scaleFactor表示每次图像尺寸减小的比例
4. minNeighbors表示每一个目标至少要被检测到3次才算是真的目标(因为周围的像素和不同的窗口大小都可以检测到人脸),
5. minSize为目标的最小尺寸
6. minSize为目标的最大尺寸

适当调整4,5,6两个参数可以用来排除检测结果中的干扰项。


程序:

C++程序如下:

Python程序如下:

效果

最终结果如下图所示:

0 条评论
发表一条评论