前面学习了通过存储摄像头捕获的画面图像,然后对图像中的人脸进行识别检测,本文学习通过摄像头进行实时检测人脸。

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()

更多推荐