首先、来两张帅帅的识别效果图:
目标总览:
一、 Haar特征分类器介绍
二、detectMultiScale函数
三、python OpenCV 解决人脸识别报错
四、识别框的形状**
五、代码实现
一、Haar特征分类器介绍
Haar特征分类器就是一个XML文件,该文件中会描述人体各个部位的Haar特征值。包括人脸、眼睛、嘴唇等等。
Haar特征分类器存放目录:OpenCV安装目录中的\data\ haarcascades目录下,opencv2.4.8版本下的Haar特征分类器如下:
1 | haarcascade_eye.xml |
根据命名就可以很快知道各个分类器的用途。
其中:haarcascade_frontalface_alt.xml与haarcascade_frontalface_alt2.xml都是人脸识别的Haar特征分类器了。
二、detectMultiScale函数
cvHaarDetectObjects是opencv1中的函数,opencv2中人脸检测使用的是 detectMultiScale函数。它可以检测出图片中所有的人脸。
1 | rects = cascade.detectMultiScale(img,1.3, 6,cv2.CASCADE_SCALE_IMAGE,(20,20)) |
img–待检测图片,一般为灰度图像加快检测速度;
rects–被检测物体的矩形框向量组;
其他参数–调节识别程度……
三、python OpenCV 解决人脸识别报错
1 | 错误提示: |
到底是什么问题呢?
1 | face_cascade=cv2.CascadeClassifier('haarcascade_frontalface_default.xml') |
我们在这段代码后面,加上下面这句话,就是你自己找下分类器文档的位置,把path写清楚。
1 | face_cascade.load('D:/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') |
四、识别框的形状
选择输出识别框的形状,对rects(被检测物体的矩形框向量组)中的数据进行处理
1 | cv2.circle(img, (x, y), r, (co1,co2,co3), 2) #圆形 |
Then it works happily ! φ(゜▽゜*)♪
再来张识别对比图:
五、代码
1 | import cv2 |
~~~~~~~~~~~~~~~~~~~~
当然,这个识别效果也不是特别好,再来张识别对比图(头像太小识别效果不是特别准确):
**
END
**