用Python实现基于haarcascade文件的动态人脸检测

    windows环境:windows7 SP1 64位

    EXE安装:Python3.6.2(如图)

     

smartopencv 人脸识别android opencv人脸识别程序_人脸识别

采用的训练文件是OpenCV文件库里提供的haarcascade_frontalface_ default.xml训练数据集。我将其中的frontalface.xml文件复制到桌面,方便在随后程序里调用它。

     

smartopencv 人脸识别android opencv人脸识别程序_opencv_02

 

    开始今天的项目:

第一步:获取并显示USB摄像头(或者摄像头)实时视频

     

smartopencv 人脸识别android opencv人脸识别程序_python_03

     执行上述程序,效果如图:

     

smartopencv 人脸识别android opencv人脸识别程序_python_04

 注意第一步只是体会,了解摄像头是如何被程序打开的,重点是第二步。

第二步:识别出人脸

按照机器学习的方法

需要把大量的人脸图片数据喂给程序,程序再利用数学算法建立建立可靠的人脸特征模型,最终识别出人脸。

如果只是简单的人脸识别,OpenCV文件库里有现成的训练集,可以直接调用它。我选择了后一种方法。

代码如下:

     

smartopencv 人脸识别android opencv人脸识别程序_python_05

 

第三步: 摄像头内有可能出现多张人脸

    当摄像头内出现多张人脸时,可以用一个for循环将所有检测到的人脸都读取出来,再逐个用矩形框框出来。

 

smartopencv 人脸识别android opencv人脸识别程序_人脸检测_06





Opencv会给出每张人脸在图像中的起始坐标(左下角,x、y)以及长、宽(h、w),据此可以截取出人脸。

其中cv2.rectangle()用于画框。它的最后两个参数一个用于指定矩形边框的颜色,一个用于指定矩形边框线条的粗细程度。

运行上述程序:

     

smartopencv 人脸识别android opencv人脸识别程序_摄像头_07

    

smartopencv 人脸识别android opencv人脸识别程序_人脸检测_08

人脸识别模块是项目的第一步,成功实现人脸识别后无论是干活的热情,还是做项目的动力都会大大增加。