用Python实现基于haarcascade文件的动态人脸检测
windows环境:windows7 SP1 64位
EXE安装:Python3.6.2(如图)
采用的训练文件是OpenCV文件库里提供的haarcascade_frontalface_ default.xml训练数据集。我将其中的frontalface.xml文件复制到桌面,方便在随后程序里调用它。
开始今天的项目:
第一步:获取并显示USB摄像头(或者摄像头)实时视频
执行上述程序,效果如图:
注意第一步只是体会,了解摄像头是如何被程序打开的,重点是第二步。
第二步:识别出人脸
按照机器学习的方法
需要把大量的人脸图片数据喂给程序,程序再利用数学算法建立建立可靠的人脸特征模型,最终识别出人脸。
如果只是简单的人脸识别,OpenCV文件库里有现成的训练集,可以直接调用它。我选择了后一种方法。
代码如下:
第三步: 摄像头内有可能出现多张人脸
当摄像头内出现多张人脸时,可以用一个for循环将所有检测到的人脸都读取出来,再逐个用矩形框框出来。
Opencv会给出每张人脸在图像中的起始坐标(左下角,x、y)以及长、宽(h、w),据此可以截取出人脸。
其中cv2.rectangle()用于画框。它的最后两个参数一个用于指定矩形边框的颜色,一个用于指定矩形边框线条的粗细程度。
运行上述程序:
人脸识别模块是项目的第一步,成功实现人脸识别后无论是干活的热情,还是做项目的动力都会大大增加。