摄像头实时人脸检测
- 摄像头检测的话与视频检测类似,都是读取每一帧用detectMultiScale()函数做检测
- 要点
- 用到cv2.VideoCapture()函数来控制摄像头工作
代码及注释如下:
import cv2
camera = cv2.VideoCapture(0) # 摄像头拍摄的值赋给camera变量
face_cascade = cv2.CascadeClassifier('cascades/haarcascade_frontalface_default.xml') # 加载人脸特征库
face_cascade.load('F:\opencv\opencv3.3\opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') # 加载分类器文档位置
while (True):
ret, img = camera.read() # 读取一帧的图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转化为灰度图像
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(5, 5), flags=0) # 检测人脸
print('Found {0} faces!'.format(len(faces)))
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2) # 用矩形圈出人脸
cv2.imshow('camera', img) # 创建’camera‘窗口并在其中显示img的值
if cv2.waitKey(1) & 0xFF == 27: # 按esc退出(27为esc的'ascll'码)
break
camera.release() # 释放摄像头
cv2.destroyAllWindows() # 释放窗口
显示结果
ps:画功很烂,将就着看哈