import cv2
import sys
cascPath = "./haarcascade_frontalface_alt.xml"#地址
faceCascade = cv2.CascadeClassifier(cascPath)
video_capture = cv2.VideoCapture(0, cv2.CAP_DSHOW)#创建一个视频获取对象
#人脸识别分类器
while True:
# Capture frame-by-frame
ret, frame = video_capture.read()#参数frame表示截取到一帧的图片
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
#BGR格式转化为灰度图
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.1,#表示在前后两次相继的扫描中,搜索窗口的比例系数表示在前后两次相继的扫描中,搜索窗口的比例系数
minNeighbors=3,#表示构成检测目标的相邻矩形的最小个数(默认为3个)。
minSize=(30, 30),#尺寸
flags=cv2.CASCADE_SCALE_IMAGE # 这里是opencv版本的问题,3.0以上的版本
)
# 框选人脸
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 展示最后一帧
cv2.imshow('Video', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):#退出
break
# 当所有的事情做完之后,调用摄像头。
video_capture.release()
cv2.destroyAllWindows()
自己看的第一组完整的代码,并亲自给代码注释了一下。
第一次用这个,纯属新手,如有不合理的地方,请批评指正。