前面我介绍了 从图片中人脸识别,也介绍了 摄像头接口 ,这2者组合就可以构成实时人脸检测。如果要效果好,还要注意 调整摄像头的参数
程序运行前应该下载好文件haarcascade_frontalface_default.xml,程序注释中有个下载地址。
如果你自己电脑上有opencv,那么电脑上也可以搜索到,我的在C:\opencv347\opencv\sources\data\haarcascades_cuda目录下。并且有很多个。
如果想知道怎么构造这个文件,可以看我另篇博客:目标检测的模型haartraining培训 会这个就可以检测任何东西了。
程序代码如下:
import cv2
# https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml
face_patterns = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') #加载分类器,在opencv库内
cap = cv2.VideoCapture(0) #打开摄像头操作,摄像头编号0,1,2,3
cap.set(cv2.CAP_PROP_FRAME_WIDTH,1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT,1024)
while cap.isOpened:
#利用read方法读取摄像头的某一帧图片
(ok, image) = cap.read()
if not ok:
break
faces = face_patterns.detectMultiScale(image,scaleFactor=1.1,
minNeighbors=5,minSize=(80, 80))
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow('face', image);
if cv2.waitKey(10)&0xFF==ord('q'):#按下q,退出循环
break
cap.release()
cv2.destroyAllWindows()
程序运行效果如下: