python-opencv 实现人脸识别功能

Posted 繁星流动,你我同路

tags:

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

使用python-opencv 实现人脸识别功能。

思路如下:

1.使用opencv库打开摄像头。

2.加载opencv中自带的人脸特征识别分类器

3.输出结果

代码如下:

import cv2
import matplotlib.pyplot as plt
# 1.读取笔记本相机
cap = cv2.VideoCapture(0)
# 2.在每一帧数据中进行人脸识别检测
while(cap.isOpened()):
    ret, frame = cap.read()
    if ret==True:
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        # 3.实例化OpenCV自带的人脸识别的分类器 
        face_cas = cv2.CascadeClassifier(r"E:/studay/python/haarcascade_frontalface_default.xml" ) 
        face_cas.load(r"E:/studay/python/haarcascade_frontalface_default.xml")
        # 4.调用识别功能
        faceRects = face_cas.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=3, minSize=(80, 80)) 
        for faceRect in faceRects: 
            x, y, w, h = faceRect 
            # 在识别到的地方画出人脸框图
            cv2.rectangle(frame, (x, y), (x + h, y + w),(0,255,0), 3) 
        cv2.imshow("face",frame)
        # 按q退出
        if cv2.waitKey(1) & 0xFF == ord(\'q\'):
            break
# 5. 释放资源
cap.release()  
cv2.destroyAllWindows()

其中detectMultiScale函数的主要参数有四个,分别为:

参数1:image--待检测图片,一般为灰度图像加快检测速度,这里选择了gray

参数2:scaleFactor--指定图像大小在每个图像比例下缩小多少的参数。相当于缩放人脸比例去检测,如果缩放太小有可能会检测不到。默认为1.1即缩放了10%;这里设置了1.2

参数3:minNeighbors--表示构成检测目标的相邻矩形的最小个数(默认为3个)。

参数4:minSize - 检测出的对象最大可能性的大小。大于此值的对象将被忽略掉。

还有要注意一点的是要将分类器的路径写对,否则会出现加载失败的情况。

以上是关于python-opencv 实现人脸识别功能的主要内容,如果未能解决你的问题,请参考以下文章

人脸表情识别

Python-opencv学习第三十课:人脸检测

利用opencv带你玩转人脸识别-下篇(人脸录入,数据训练,人脸识别小案例快速入门)

在 django(使用 python-opencv)项目中找不到人脸(人脸检测)

Android 实现人脸识别教程[运用虹软人脸识别SDK]

Android基于opencv4.6.0实现人脸识别功能