OpenCV3-Python人脸识别方法—基于图像
admin 于 2018年06月28日 发表在 计算机视觉
OpenCV实现人脸检测技术的其中一个版本,由 Paul Viols 和 Michael Jones 设计,称为Viola-Jones 检测器,OpenCV称这个检测器为“Harr分类器”。
1. 检测原理
Haar分类器是一个监督分类器,其先对图形进行直方图均衡化并归一化到同样大小,然后标记里面是否包含要检测的物体。
Haar级联不具有旋转不变性,其认为倒置的人脸图像和直立的人脸图像不一样,侧面的人脸图像与正面的也不一样。
2. 基于图像检测
OpenCV中预先训练好的物体检测器位于 .../data/haarcascades 目录下,也可访问官网获取。基于正面识别效果最好的模型文件为 haarcascade_frontalface_alt2.xml 。
(1)检测器文件如下:
(2)举例(官网):
import cv2 filename = 'players.png' def detect(filename): face_cascade = cv2.CascadeClassifier('./cascades/haarcascade_frontalface_alt2.xml') eye_cascade = cv2.CascadeClassifier('./cascades/haarcascade_eye.xml') img = cv2.imread(filename) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ''' cv2.CascadeClassifier.detectMultiScale(image[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize]]]]]) → objects Parameters: image – Matrix of the type CV_8U containing an image where objects are detected. scaleFactor – Parameter specifying how much the image size is reduced at each image scale. minNeighbors – Parameter specifying how many neighbors each candidate rectangle should have to retain it. flags – Parameter with the same meaning for an old cascade as in the function cvHaarDetectObjects. It is not used for a new cascade. minSize – Minimum possible object size. Objects smaller than that are ignored. maxSize – Maximum possible object size. Objects larger than that are ignored. objects – Vector of rectangles where each rectangle contains the detected object, the rectangles may be partially outside the original image. ''' faces = face_cascade.detectMultiScale(gray, 1.1, 5) for (x,y,w,h) in faces: img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) cv2.namedWindow('Players Detected!!') cv2.imshow('Players Detected!!', img) cv2.waitKey() cv2.destroyAllWindows() detect(filename)
(3)检测结果如下:
下一篇:《OpenCV3-Python人脸识别方法—基于摄像头》
参考:
Gary Bradski,Adrian Kaehler(著)《学习OpenCV(中文版)》 清华大学出版社。