基于python CV2 USB摄像头人脸识别

闲无事搞一个简单的USB摄像头人脸识别代码介绍如下

总体架构

这个脚本实现了一个基于OpenCV和Tkinter的桌面人脸识别应用程序,主要包含两个核心类:SimpleFaceRecognizerFaceRecognitionApp

SimpleFaceRecognizer 类分析

1. 初始化方法

python

def __init__(self):
    self.face_data = {}
    self.threshold = 5000  # 识别阈值
    self.registration_threshold = 3000  # 注册时的更严格阈值
  • face_data: 存储人脸数据的字典,键为姓名,值为该姓名对应的人脸特征列表

  • threshold: 人脸识别时的阈值,用于判断是否匹配

  • registration_threshold: 人脸注册时的更严格阈值,防止同一人脸使用不同姓名重复注册

2. 核心方法详解

add_face 方法

python

def add_face(self, name, face_array):
    if name not in self.face_data:
        self.face_data[name] = []
    self.face_data[name].append(face_array)
  • 功能:将人脸数据添加到数据库中

  • 实现:如果姓名不存在则创建新列表,然后将人脸特征数组添加到对应姓名的列表中

predict 方法

python

def predict(self, test_face):
    min_distance = float('inf')
    best_match = "未知"
    
    for name, faces in self.face_data.items():
        for stored_face in faces:
            distance = np.sqrt(np.sum((test_face - stored_face) ** 2))
            if distance < min_distance:
                min_distance = distance
                best_match = name
    
    if min_distance > self.threshold:
        return "未知", min_distance
    else:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BG8EQB

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

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

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

打赏作者

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

抵扣说明:

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

余额充值