import cv2 |
import numpy as np |
face_cascade = cv2.CascadeClassifier( 'haarcascade_frontalface_default.xml' ) |
cap = cv2.VideoCapture( 'video.mp4' ) |
while True : |
# 读取视频流的下一帧 |
ret, img = cap.read() |
# 如果读取视频成功,则进行人脸检测 |
if ret = = True : |
# 转换图像为灰度图像,Haar Cascade 检测器需要灰度图像 |
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) |
# 使用分类器进行人脸检测,并返回结果 |
faces = face_cascade.detectMultiScale(gray, 1.3 , 5 ) |
# 遍历所有的人脸结果 |
for (x, y, w, h) in faces: |
# 在原图上绘制人脸矩形框 |
cv2.rectangle(img, (x, y), (x + w, y + h), ( 255 , 0 , 0 ), 2 ) |
# 显示结果帧 |
cv2.imshow( 'image' , img) |
# 如果是视频,则按 q 键退出 |
if cv2.waitKey( 1 ) & 0xFF = = ord ( 'q' ): |
break |
# 释放视频流和摄像头 |
cap.release() |
# 关闭所有窗口 |
cv2.destroyAllWindows() |