视频中的人脸检测
在学习并实现了图片中人脸的检测后对在pycharm下的opencv有了一些了解,今天研究了一下视频中的人脸检测,道理是一样的,只不过要注意以下几点:
1.调用cv2.VideoCapture()函数来读取视频
2.调用camera.read()函数来读取每一帧(这里要有一个死循环)
3.做一个窗口退出的接口
代码及注释如下:
import cv2
face_cascade = cv2.CascadeClassifier('cascades/haarcascade_frontalface_default.xml') # 加载人脸特征库
face_cascade.load('F:\opencv\opencv3.3\opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') # 加载分类器文档位置
camera = cv2.VideoCapture('cc.avi') # 读取视频文件
while(True):
ret, img = camera.read() # 从视频中获取布尔值以及帧本身
if ret == True: # 根据布尔值判断是否读取帧
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
else:
break
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5) # 人脸检测,具体参数见上一篇文章
for (x, y, w, h) in faces: # x, y为坐标 w, h为长和宽
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) # 用矩形来显示检测出的人脸
cv2.imshow("camera", img) # 创建’camera‘窗口并在其中显示img的值
if cv2.waitKey(1000//50) & 0xff == 27: # 按esc退出(27为esc的'ascll'码)
break
camera.release() ldestroy
cv2.destroyA
cv2.destroyAlWindows() # 释放窗口