前面学习了通过存储摄像头捕获的画面图像,然后对图像中的人脸进行识别检测,本文学习通过摄像头进行实时检测人脸。
OpenCV学习——人脸读取,信息库比对_笨小古的博客-CSDN博客
# 实例化级联分类器classifier =cv.CascadeClassifier( "haarcascade_frontalface_default.xml" ) # 加载分类器classifier.load('haarcascade_frontalface_default.xml')
rect = classifier.detectMultiScale(gray, scaleFactor, minNeighbors, minSize,maxsize)
Gray: 要进行检测的人脸图像
scaleFactor: 前后两次扫描中,搜索窗口的比例系数
minneighbors:目标至少被检测到minNeighbors次才会被认为是目标
minsize和maxsize: 目标的最小尺寸和最大尺寸
import cv2 as cv# 开启摄像头cap = cv.VideoCapture(0)# 在每一帧数据中进行人脸识别while (cap.isOpened()): # 摄像头开启后执行ret, frame = cap.read()if ret == True:gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY) # 以灰度图的形式读取图像# 实例化OpenCV人脸识别的分类器face_cascade = cv.CascadeClassifier(r'data\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml')face_cascade.load(r'data\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml')# 调用识别人脸faceRects = face_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))for faceRect in faceRects:x, y, w, h = faceRect# 框出人脸cv.rectangle(frame, (x, y), (x + h, y + w), (0, 255, 0), 3)cv.imshow("frame", frame)if cv.waitKey(1) & 0xFF == ord('q'):break# 释放资源cap.release()cv.destroyAllWindows()