实现人脸和姓名一一对应

11 篇文章 4 订阅
8 篇文章 4 订阅

基于树莓派的人脸识别门禁系统(python+OpenCV+PyQt)

技术难点:

  1. 登录界面准确的将数据输入到指定的 QLineEdit上
  2. 多线程实现识别人脸、录入人脸和加载进度条
  3. 获取人脸图片和训练人脸
  4. 实现人脸和姓名一一对应

实现人脸和姓名一一对应


最终实现的是人脸识别门禁,只有录入的人脸才有权限打开门,这就要让树莓派知道识别的是哪张人脸,要将人脸和姓名一一对应起来。在训练的过程中,获取到了人脸和 id,整理成 list 并返回,因此每个人脸都对应一个id,使用 recognizer.predict()函数将其返回,可以将id和人脸对应起来,并可以对置信度进行判断,从而控制继电器的开关,并显示相关提示信息

# faces中的四个量分别为左上角的横坐标、纵坐标、宽度、长度
for(x,y,w,h) in faces:
    # 围绕脸的框
    cv2.rectangle(self.image, (x,y), (x+w,y+h), (0,255,0), 2)
    # 把要分析的面部的捕获部分作为参数,并将返回其可能的所有者,指示其ID以及识别器与该匹配相关的置信度
    id, confidence = self.recognizer.predict(gray[y:y+h,x:x+w])
    
    # 对置信度进行判断,高于预定值显示出提示信息,并控制GPIO输出高低电平来控制门的开关
    if (confidence < 90):
        id = names[id]
        confidence = "  {0}%".format(round(100 - confidence))
        GPIO.output(25, GPIO.HIGH)   #GPIO25 输出3.3V
        self.lab_T_F.setText( "成功!")
        self.lab_ID_E.setText(str(id))     
    else:
        id = "unknown"
        GPIO.output(25, GPIO.LOW)   #GPIO25 输出0.0V
        confidence = "  {0}%".format(round(100 - confidence))
        self.lab_T_F.setText( "失败!")
        self.lab_ID_E.setText("无法识别")
        
    # 给图片添加文本 图片矩阵, 添加文本名称, 设置文本显示位置,
    # 字体样式, 字体大小, 字体颜色, 字体粗细
    cv2.putText(self.image, str(id), (x+5,y-5), self.font, 1, (255,255,255), 2)
    cv2.putText(self.image, str(confidence), (x+5,y+h-5), self.font, 1, (255,255,0), 1)   

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ONESTAR博客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值