前言
今天老大找到我,让我给写一个人脸识别的考勤系统!说是很多同事都让别人拿着职员卡进行直接打卡!对公司对大家都造成了不好的印象!写完给你发奖金!那我一看到奖金哪还想那么多,直接和老大说,明天就能正常使用了!没想到因为这件事同事都孤立我的感觉了!
1. 项目简介
本项目使用Python3.6编写,Qt Designer(QT5)设计主界面,PyQt5库编写控件的功能,使用开源 DeepFace人脸识别算法进行人脸识别,使用眨眼检测来实现活体识别,使用OpenCV3实现实时人脸识别。同时,将公司同事信息,各部门同事生人数、考勤信息录入到MySQL数据库中,方便集中统一化管理。因为本项目仅由我一个人开发,能力精力有限,实现了预期的绝大多数功能,但是活体检测功能还存在bug,主要表现是界面卡死,如果小伙伴对本项目中有不懂的地方或者发现问题提出解决方案!后续会慢慢优化!
2. 系统前端设计
使用 Qt Designer 设计前端界面。
2.1 主界面
2.2 信息采集界面
3. 数据库存取信息
3.1 数据库可视化工具 Navicat
使用该软件是为了方便管理维护信息,如果有数据库基础,当然也可以选择其它方式。其主界面如下:
3.2 创建数据库流程
3.3 PyMySQL
项目中只使用了简单的写入、查询等几个常用命令,即使没有数据库基础的话,上手这个库也比较容易。看一下文档,基本就会了。
4. 系统功能介绍(正在更新🛵···)
4.1 信息采集
4.2 人脸识别
4.3 活体检测(存在bug😣)
目前的bug是,活体检测开启关闭之后,关闭人脸考勤,再关闭相机的时候会卡死。
4.4 查询考勤信息
4.5 查询同事信息
4.6 请假登记
5. 使用教程
5.1 系统环境配置
opencv+contrib 安装步骤: 1.https://www.lfd.uci.edu/~gohlke/pythonlibs/ 搜索contrib 2.找到对应你系统python版本的opencv+contrib下载 3.我安装的是:opencv_python-4.1.2+contrib-cp37-cp37m-win_amd64.whl 4.打开anaconda命令行 pip install opencv_python-4.1.2+contrib-cp37-cp37m-win_amd64.whl cmake 官网下载.msi安装包 下载即可,安装注意导入系统环境变量 dilib 直接anaconda命令行中 pip install dlib(时间比较长) freetype pip install freetype-py pymysql pip install pymysql pyqt5 pip install pyqt5
5.2 需要修改源码
文件目录树:
-
安装 msqlservice 然后修改 exacute.py文件中的数据库连接代码。比如 db = pymysql.connect("localhost", "root", "mysql105", "facerecognition")。这首先需要在 navicat中创建数据库。
-
如果不是通过本系统的信息采集功能采集的人脸照片,请将采集的人脸照片放到 face_dataset/XX 路径下,其中XX是学号(唯一索引),如果是通过系统采集的,则会自动存放在该路径下,不需要修改。
5.3 使用步骤
-
navicat创建数据库,打开数据库录入学生信息和班级信息;
-
修改源码,连接到创建的数据库
-
采集人脸照片,点击界面中的信息采集,在子窗口操作即可。
-
训练人脸识别模型,点击界面中的更新人脸库
-
开始考勤:打开相机 --> 开始考勤
-
Have fun!😊
需要脚本或者需要源码的:
①3000多本Python电子书有
②Python开发环境安装教程有
④软件开发常用词汇有
⑤Python学习路线图有
⑥项目源码案例分享有
如果你用得到的话可以直接拿走,在我的QQ技术交流群里群号:754370353以自助拿走
7. 待完善功能
7.1 系统优化
解决bug,提升系统运行效率与稳定性。
7.2 人脸照片存储到数据库中
目前还是存储在本地,不安全。
7.3 生成考勤日志
自动统计每个班级的考勤信息,并生成日志。
7.4 从教务系统导入学生个人课表,保证判定的稳定性
目前仅仅通过设定的考勤时间统计,不够人性化,应该根据学生的各任课表来统计。
7.5 同时多人识别
提升识别效率,比如很多同学同时进教室,如果一人一人识别,则会造成拥堵。
7.6 上传图片识别
如果系统出现故障,老师可以用手机拍摄照片存档,然后上传系统进行人脸识别考勤。
7.7 开发更稳定的人脸识别
防止用照片或视频骗过系统。
7.8 开发更稳定的活体检测
防止视频等骗过系统。、
慢慢优化吧。需要源代码记得看上面的教程领取哦!点击这里 领取