用opencv实现人脸识别

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

    windows环境:windows7 SP1 64位

    EXE安装:Python3.6.2(如图)

     

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

      下载链接 https://download.csdn.net/download/u010766436/9854353

 

    开始今天的项目:

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

     

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

     

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

第二步:识别出人脸

按照机器学习的方法

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

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

代码如下:

     

 

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

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

 





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

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

运行上述程序:

     

    

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