人脸识别基础(检测是否有人)
准备:
- 导入第三方库opencv
笔记
- cv2.namedWindow(window_name) 设置窗体名字
- cap = cv2.VideoCapture(camera_idx) 设置视频来源,若参数为一个路径使用本地文件, 若参数为0则使用本地摄像头
- 告诉opencv使用人脸识别的分类器
- 设置识别人脸后边框的颜色
- 循环读取视频帧,遍历每一帧进行识别,
- 转换为灰度图像进行识别,若返回长度大于0 则表示检测到人脸
代码
import os
import cv2
import sys
import importlib
importlib.reload(sys)
def CatchUsbVideo(window_name, camera_idx):
cv2.namedWindow(window_name)
cap = cv2.VideoCapture(camera_idx)
classfier = cv2.CascadeClassifier(os.getcwd()+"\\haarcascade\\haarcascade_frontalface_alt2.xml")
color = (0, 255, 0)
count = 0
while cap.isOpened():
ok, frame = cap.read()
if not ok:
break
grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faceRects = classfier.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))
if len(faceRects) > 0:
count=count+1
return count
if __name__ == '__main__':
result=CatchUsbVideo("人脸识别区域",0)
if result > 0:
print('视频中有人!!')
else:
print('视频中无人!!')