简单的人脸识别程序

环境准备:

Python 3.7.9
opencv 4.4.0
开发工具 PyCharm Community Edition


正文:

import cv2
# 加载人脸模型库
face_model = cv2.CascadeClassifier('E:/SOFT/python/opencv/opencv/build/etc/haarcascades/haarcascade_frontalface_default.xml')
# face_model = cv2.CascadeClassifier('E:/SOFT/python/opencv/opencv/build/etc/lbpcascades/lbpcascade_frontalcatface.xml')

# 打开摄像头
capcure = cv2.VideoCapture(0)
# 定义编解码器和创造对象
#fourcc = cv2.VideoWriter_fourcc(*'XVID')
# out是一个video writer实例化对象,第一个参数是要制作的视频文件名称
# 20是fps,接下来时视频的长宽,如果只保存灰度图贼还需要加上False。
#out = cv2.VideoWriter('E:/output.avi', fourcc, 20.0, (640, 480))

# 获取摄像头实时画面
while True:
    #    读取摄像头当前这一帧的画面  ret:True fase image:当前这一帧画面
    ret, image = capcure.read()

    #  图片灰度处理
    gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
    # 检查人脸
    # faces = face_model.detectMultiScale(gray, 1.1, 3, 0, (20.20))
    # 参数1:输入图像;参数2:每次缩小图像的比例,默认是1.1;参数3:匹配成功所需要的周围矩形框的数目,人脸,这个默认值是3;
    # 参数4:CASCADE_DO_ROUGH_SEARCH初略的检测;参数5和参数6:匹配物体的大小范围;
    # faces = face_model.detectMultiScale(gray, 1.1, 4, cv2.CASCADE_DO_ROUGH_SEARCH, (80, 80), (350, 350))
    faces = face_model.detectMultiScale(gray, 1.1, 4, cv2.CASCADE_DO_ROUGH_SEARCH, (80, 80), (350, 350))
    # cap.set(cv2.CAP_PROP_FPS, 30)
    # 标记人脸
    for (x, y, w, h) in faces:
        # 矩形标记
        cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
        print(f'左{x},右{y},长{w},宽{h}')
        # 显示图片
        cv2.imshow("faces in video", image)
        print("显示图片cv2.imshow执行完毕")
        # 图像旋转
        # image = cv2.flip(image, 0)
        # 输出视频
        #out.write(image)
        # 暂停窗口
        if cv2.waitKey(30) & 0xFF == ord('q'):
            break
# 释放资源
capcure.release()
out.release()
# 销毁窗口
cv2.destroyAllWindows()

注意:检测器地址需要根据实际地址进行替换,当前使用的是绝对路径,在Linux中需要替换为相对路径;选择【haarcascade_frontalface_default.xml】检测器的原因是速度快、较为准确,其他检测器在本机中有不同程度的卡顿;项目执行过程中遇到无法识别时会出现卡顿的情况,今后在学习过程中研究如何规避;


效果:

简单的人脸识别程序_第1张图片


你可能感兴趣的:(opencv,python,计算机视觉,人脸识别,人工智能)