基于人脸识别的签到系统代码
时间: 2024-06-17 21:03:35 浏览: 180
基于人脸识别的签到系统一般需要使用计算机视觉技术和深度学习算法,包括但不限于人脸检测、人脸对齐、特征提取和分类等技术。以下是一个简单的基于Python和OpenCV的人脸识别签到系统代码示例:
```
import cv2
import os
import numpy as np
# 读取训练好的模型文件
model_path = "model.yml"
if os.path.exists(model_path):
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read(model_path)
# 加载人脸分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 捕获摄像头视频流
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
# 灰度化处理
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)
for (x, y, w, h) in faces:
# 根据检测到的人脸区域提取人脸特征
roi_gray = gray[y:y + h, x:x + w]
roi_color = frame[y:y + h, x:x + w]
# 使用训练好的模型识别人脸
id_, conf = recognizer.predict(roi_gray)
if conf >= 70:
# 如果识别结果置信度大于等于70,则认为识别成功
cv2.putText(frame, "ID:{}".format(id_), (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
else:
# 否则认为识别失败
cv2.putText(frame, "Unknown", (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
# 显示视频流窗口
cv2.imshow('Face Recognition', frame)
# 按下'q'键退出程序
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头资源并关闭所有窗口
cap.release()
cv2.destroyAllWindows()
```
上述代码实现了一个简单的基于人脸识别的签到系统,可以读取预先训练好的模型文件进行人脸识别,并在摄像头视频流中实时显示识别结果。
阅读全文