opencv实现人脸识别 人脸图像采集模块

Posted blsx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv实现人脸识别 人脸图像采集模块相关的知识,希望对你有一定的参考价值。

这一步我们开始搭建第一个模块,用来检测到图像中的人脸位置,并将它拍下来保存在指定路径

流程图:

技术图片

 

代码实现:

import cv2


def pic(cam):
    # 调用笔记本内置摄像头,所以参数为0,如果有其他的摄像头可以调整参数为1,2
    cam = cv2.VideoCapture(0)

    # 使用自带的人脸识别分类器, 其中 这个.xml文件是 识别人脸的分类器文件
    # 这里我已经把这个文件放在了当前项目目录下
    face_detector = cv2.CascadeClassifier(haarcascade_frontalface_default.xml)

    # 输入用户id
    face_id = input(\\n enter user id:)

    print(\\n Initializing face capture. Look at the camera and wait ...)

    # count变量记录图片张数
    count = 0

    while True:

        # 从摄像头读取图片
        #  cam.read()按帧读取视频,sucess,img是cam.read()方法的两个返回值。
        #  其中sucess是布尔值,如果读取帧是正确的则返回True,
        #  如果文件读取到结尾,它的返回值就为False。
        #  img就是每一帧的图像,是个三维矩阵。
        sucess, img = cam.read()

        # 转为灰度图片
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

        # 检测人脸
        faces = face_detector.detectMultiScale(gray, 1.3, 5)

        for (x, y, w, h) in faces:
            # 4个参数依次是  图像矩阵, 矩形左上角起始坐标,右下角坐标, 矩形边框线的颜色
            cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0))
            count += 1

            # 保存图像
            cv2.imwrite("D:/FaceData/" + str(face_id) + . + str(count) + .jpg, gray[y: y + h, x: x + w])

            cv2.imshow(image, img)

        # 保持画面的持续。
        k = cv2.waitKey(1)

        if k == 27:   # 通过esc键退出摄像
            break

        elif count >= 100:  # 得到100个样本后退出摄像
            break

    # 关闭摄像头
    cam.release()
    cv2.destroyAllWindows()

if __name__ == __main__:
    cam = cv2.VideoCapture(0)
    pic(cam)

代码中每个函数的作用基本都进行了简略注释,

 

到现在,我们就在指定的文件夹中有了一定数量的人脸灰度图了。

以上是关于opencv实现人脸识别 人脸图像采集模块的主要内容,如果未能解决你的问题,请参考以下文章

python中使用Opencv进行人脸识别

图像人脸检测(框出人脸笑脸眼睛)

基于opencv的人脸采集训练及识别应用

基于OpenCv的人脸识别,翻车了居然识别错误。

opencv实现人脸识别 运用tkinter进行GUI绘制 整合人脸识别模块

ROS-opencv-人脸识别-物体追踪-二维码识别