闲无事搞一个简单的USB摄像头人脸识别代码介绍如下
总体架构
这个脚本实现了一个基于OpenCV和Tkinter的桌面人脸识别应用程序,主要包含两个核心类:SimpleFaceRecognizer和FaceRecognitionApp。
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:


最低0.47元/天 解锁文章
766

被折叠的 条评论
为什么被折叠?



