因为我没有自己的摄像头,这里只是实现读取本地视频实现人脸检测,视频是抖音上下的。
import cv2
import sys
from PIL import Image
def CatchUsbVideo(window_name):
cv2.namedWindow(window_name)
# 视频来源,可以来自一段已存好的视频,也可以直接来自USB摄像头
cap = cv2.VideoCapture("/home/dong/Pictures/QQ视频20190417160108.mp4")
# 告诉OpenCV使用人脸识别分类器
classfier = cv2.CascadeClassifier("/home/dong/PycharmProjects/untitled/venv/lib/python3.6/site-packages/cv2/data/haarcascade_frontalface_alt2.xml")
# 识别出人脸后要画的边框的颜色,RGB格式
color = (0, 0, 0)
while cap.isOpened():
ok, frame = cap.read() # 读取一帧数据
if not ok:
break
# 将当前帧转换成灰度图像
grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 人脸检测,1.2和2分别为图片缩放比例和需要检测的有效点数
faceRects = classfier.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=15, minSize=(32, 32), flags=4)
if len(faceRects) > 0: # 大于0则检测到人脸