人脸识别(识别程序)

系列文章目录

人脸采集
数据训练


请添加图片描述


代码思路

一、pandas是什么?

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、使用步骤

1.引入代码库

import cv2
  • 获取人脸识别对象
# 获取人脸识别对象
recognizer = cv2.face.LBPHFaceRecognizer_create()
  • 读取在上一博客程序中获取的训练数据
recognizer.read('yujinlong232.yml')
  • 加载分类器
face_detector = cv2.CascadeClassifier(
    r'C:\Users\HONOR\AppData\Local\Programs\Python\Python37\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')
  • 设置字体
font = cv2.FONT_HERSHEY_SIMPLEX
  • 设置变量
    统计 id数量
idnum = 0
  • 姓名列表
names = ['jhy', 'yjl']
  • 开启摄像头
cappatu = cv2.VideoCapture(0)
while True:
        ret, frame = cappatu.read()
  • 将图像转换为灰度图像
 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
  • 加载特征数据

faces = face_detector.detectMultiScale(gray)
  • 画框
for x, y, w, h in faces:
            cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), thickness=2)
            cv2.circle(frame, (x + w // 2, y + h // 2), radius=w // 2, thickness=2, color=(0, 0, 255))

  • 对人脸进行识别并输出置信度:
 id, confidence = recognizer.predict(gray[y:y + h, x:x + w])
            if confidence < 80:
                name = names[id]
            else:
                name = "unknown"
            cv2.putText(frame, str(name), (x + 5, y - 5), font, 1, (230, 250, 100), 1)
            cv2.putText(frame, str(confidence), (x + 5, y + h - 5), font, 1, (255, 0, 0), 1)
            print('标签id:', id, '置信评分:', confidence)
            cv2.imshow("c", frame)

完整带代码示

import cv2

# 获取人脸识别对象
recognizer = cv2.face.LBPHFaceRecognizer_create()
# 读取训练数据
recognizer.read('yujinlong232.yml')
face_detector = cv2.CascadeClassifier(
    r'C:\Users\HONOR\AppData\Local\Programs\Python\Python37\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')
font = cv2.FONT_HERSHEY_SIMPLEX
idnum = 0
names = ['jhy', 'yjl']
# 开启摄像头
cappatu = cv2.VideoCapture(0)
def Face():
    print('请正对着摄像头...')
    while True:
        ret, frame = cappatu.read()
    #

    # 将图片灰度
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # 加载特征数据
    # 参数: scaleFactor(比例因子):图片缩放多少,minNeighbors:至少检测多少次,
    # minSize maxSize:当前检测区域的最小面积
        faces = face_detector.detectMultiScale(gray)  # scaleFactor=1.01, minNeighbors=3,
    # maxSize=(33, 33), minSize=(28, 28)

    # 获取脸部特征值
        for x, y, w, h in faces:
            cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), thickness=2)
            cv2.circle(frame, (x + w // 2, y + h // 2), radius=w // 2, thickness=2, color=(0, 0, 255))

        # 人脸识别
            id, confidence = recognizer.predict(gray[y:y + h, x:x + w])
            if confidence < 80:
                name = names[id]
            else:
                name = "unknown"
            cv2.putText(frame, str(name), (x + 5, y - 5), font, 1, (230, 250, 100), 1)
            cv2.putText(frame, str(confidence), (x + 5, y + h - 5), font, 1, (255, 0, 0), 1)
            print('标签id:', id, '置信评分:', confidence)
            cv2.imshow("c", frame)
            if confidence<1:
                print("识别成功")
                exit()

        key = cv2.waitKey(25)  # 一直显示
        if (key & 0xFF == ord("q")) :
            break

    cv2.destroyAllWindows()  # 释放资源
if __name__ == '__main__':
    Face()

到现在为止人民脸识的程序就完成了,
下面是识别别程序以及我的训练数据的的下载地址:
识别程序文件以及训练数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿龙的代码在报错

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值