Skip to content

lihaonanbill/Gotcha

Repository files navigation

人脸识别签到系统

一个基于 OpenCV 的本地人脸识别签到小项目,包含人脸采集、数据训练、身份识别和签到表导出功能,并提供简单的 Tkinter 图形界面。

功能概览

  • 人脸检测:实时检测摄像头中的人脸。
  • 人脸采集:按键采集人脸图片,保存到 data/
  • 信息生成:根据图片文件名自动生成 Info.xls
  • 模型训练:使用 LBPH 算法训练并保存 train.yml
  • 识别签到:实时识别并将签到结果写入 SignedIn.xls
  • 图形界面:通过按钮启动各功能脚本。

项目结构

cc/
├─ GUI.py                         # 图形界面入口
├─ HumanFaceDetect.py             # 人脸检测演示
├─ FaceCollect.py                 # 人脸采集
├─ EnterInformation.py            # 从 data 生成 Info.xls
├─ Train.py                       # 训练并保存 train.yml
├─ RecognizeAndSignin.py          # 识别并写入 SignedIn.xls
├─ data/                          # 人脸样本图片
├─ train.yml                      # 训练模型文件
├─ Info.xls                       # 基础信息表
├─ SignedIn.xls                   # 签到结果表
└─ haarcascade_frontalface_default.xml

运行环境

  • Python 3.8+
  • Windows(代码中使用了 os.startfile 打开 Excel)
  • 可用摄像头

建议安装依赖:

pip install opencv-contrib-python pillow xlrd xlwt

说明:项目使用了 cv2.face.LBPHFaceRecognizer_create(),需要 opencv-contrib-python,仅安装 opencv-python 会报错。

使用方式

方式 1:图形界面启动(推荐)

python GUI.py

按钮对应功能:

  • EnterFace -> FaceCollect.py
  • EnterInfo -> EnterInformation.py
  • Train -> Train.py
  • SignIn -> RecognizeAndSignin.py
  • Check -> 打开 SignedIn.xls
  • Exit -> 关闭界面

方式 2:命令行按流程执行

  1. 采集人脸:
python FaceCollect.py
  • 按提示输入学号和姓名。
  • 采集窗口中按 s 保存一张人脸,按 q 退出。
  1. 生成信息表:
python EnterInformation.py
  1. 训练模型:
python Train.py
  1. 识别并签到:
python RecognizeAndSignin.py
  1. 查看签到结果:打开 SignedIn.xls

数据命名规则

FaceCollect.py 采集的文件名格式为:

姓名.学号.序号.jpg

示例:

zhangsan.2020000001.1.jpg

EnterInformation.pyTrain.py 依赖这个格式解析姓名与学号,请勿随意修改文件名结构。

常见问题

  • AttributeError: module 'cv2' has no attribute 'face'
    • 原因:未安装 opencv-contrib-python
  • 无法读取摄像头
    • 检查摄像头权限、设备占用情况,或修改 cv2.VideoCapture(0) 中的索引。
  • 签到表为空
    • 请确认已先完成采集与训练,且 Info.xlstrain.yml 存在。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages