利用OpenCV内置分类器进行人脸识别
#-*-coding:utf-8 -*-
import cv2
def facedetect(windowname,camera_id):
#命名和打开摄像头,详情见上一篇
cv2.namedWindow(windowname)
cap=cv2.VideoCapture(camera_id)#获取摄像头
classfier=cv2.CascadeClassifier('D:/Python/Lib/site-packages/cv2/data/haarcascade_frontalface_alt2.xml')#加载分类器,分类器位置可以自行更改
color=(0,0,255)#人脸框的颜色,采用rgb模型,这里表示g取255,为绿色框
while cap.isOpened():
ok,frame=cap.read()
if not ok:
break
grey=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#转灰
faceRects=classfier.detectMultiScale(grey,scaleFactor=1.15,minNeighbors=5,minSize=(5,5))#利用分类器检测灰度图像中的人脸矩阵数,1.15和5分别为图片缩放比例和需要检测的有效点数
if len(faceRects)>0:#大于0则检测到人脸
for faceRect in faceRects:#单独框出每一张人脸
x,y,w,h=faceRect#获取框的左上的坐标,框的长宽
cv2.rectangle(fra