OpenCV 第五章 人脸检测和识别

5.2 获取Haar级联数据
OpenCV使用一些XML文件,用于人脸、眼睛、鼻子、嘴等的跟踪,可检测静止图像、视频和摄像头所得到的图像

5.3.1 静态图像中的人脸检测
创建一个CascadeClassifier一个级联分类器,负责检测
face_cascade = cv2.CascadeClassifier(‘用于检测的XML文件的路径’)

faces = face_cascade.detectMultiScale(
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30),
flags = cv2.cv.CV_HAAR_SCALE_IMAGE
)
gray是图片灰度转换的相片。
scaleFactor。由于可能存在部分人脸距离相机相对较近,从而与较远处的人脸相比,尺寸较大。比例因子可以进行抵消补偿。
检测算法使用了一个活动窗口进行目标检测。minNeighbors选项定义了在其声明人脸被找到前,当前对象附件的目标数量。同时,minSize选项给出了每个窗口的大小。
在这些方面我采用了常用值。在实际中你可以对窗口尺寸、补偿系数等进行调试直到找到最适合的值。
函数的返回值是一组四边型,四边型内是算法检测到的人脸。

调用第一个摄像头 camera = cv2.VideoCapture(0)
ret,frame = camera.read()
read()函数有两个返回值,1.表明是否读取成功的布尔值,2.帧本身

5.3.3 人脸识别
OpenCV有三种人脸识别的方法,分别基于三种不同的算法:Eigenfaces、Fisherfaces和Local Binary Pattern Histogram(LBPH)

创建识别模型,使用EigenFace算法识别,Confidence评分低于4000是可靠

model = cv2.face.EigenFaceRecognizer_create()

创建识别模型,使用LBPHFace算法识别,Confidence评分低于50是可靠

model = cv2.face.LBPHFaceRecognizer_create()

创建识别模型,使用FisherFace算法识别,Confidence评分低于4000是可靠

model = cv2.face.FisherFaceRecognizer_create()

cv2.resize(InputArray src, OutputArray dst, Size, fx, fy, interpolation)
OpenCV 第五章 人脸检测和识别
OpenCV 第五章 人脸检测和识别