人脸检测 之 静态图像中的人脸检测
OpenCV为我们提供了Harr分类器。我们使用预先训练好的人脸检测器haarcascade_frontalface_default.xml就可以运行人脸检测程序。haarcascade_frontalface_default.xml是一个xml格式的文件,在文件中包括人脸各个部位的Harr特征值,如图:
OpenCV已经为我们训练好了分类器,可以直接使用。
# -*- coding: utf-8 -*-
import cv2
def detect(filename):
# face_cascade 为CascadeClassifier对象
face_cascade = cv2.CascadeClassifier('haarcascades/haarcascade_frontalface_default.xml')
img = cv2.imread(filename)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转化为灰度图
# 参数:
# 待检测的灰度图
# 每次搜索图像时,搜索窗口的压缩率。1.3表示搜索窗口扩大30%
# 每个人脸矩形保留近邻数目的最小值
faces = face_cascade.detectMultiScale(gray, 1.3, 5) # 返回人脸矩形数组
for (x, y, w, h) in faces:
img = cv2.rectangle(img, (x,y), (x+w, y+h), (0, 255, 0), 2) #绘制矩形
cv2.imshow("face detect", img)
cv2.waitKey(0)
filename = 'images/my_wife.jpg'
detect(filename)
程序运行的效果如下: