写在前面
这是在大二寒假的时候帮别人做的一个项目,当时的要求是用OpenMv做人脸识别,能够区别出不同的人脸,并有上位机显示。由于硬件关系并不能完全做到人脸识别但是可以完成区别不同人脸的要求,已经尽最大努力在OpenMv平台上实现需求了。因为项目已经交付,所以本项目大概率不会再更新,想要学习的话可以参考。
项目介绍
本项目是基于OpenMV Cam M7 Plus的人脸识别门禁系统,采用了做人脸识别算法,并使用pyqt5制作上位机用于添加用户,输出人脸识别结果,陌生人报警,记录门禁信息等。下位机与上位机使用串口进行通信。
功能介绍
- 热插拔查询串口
- 添加用户
- 删除用户
- 识别已经录入的用户
- 陌生人闯入报警并记录
- 远程开锁
- 查看门禁记录
实现思路
在本项目中人脸识别没有使用OpenMV主推的haar算子去做人脸识别,而是使用了lbp特征。其一是因为haar算子本身很容易出现误报且移植在OpenMV平台上效果更差,误报率很高;其二是因为本项目需要区别不同的人脸,haar只能分别有无人脸而不能区分人脸。其实用lbp做人脸识别有点曲线救国的意思,因为lbp识别的是整张图片的局部特征,而非识别人脸,所以该项目识别人脸需要在背景不变的情况下进行(门禁系统的背景恰好是不需要大幅度变化的)。由于OpenMV算力有限,经过多种方案尝试,如果想要精准区分人脸此方案应该是较优解了。
如何使用
- 将./openmv中的person.py固件烧录至OpenMV中
- 将OpenMV的P4,P5(UART3 TX,UART3 RX)利用usb-ttl模块与电脑连接
- 打开./upper computer/ dist/main/main.exe,在连接串口处选择相应的串口并连接就可以正常使用
tips:
1. 如果需要用门禁记录功能,请修改./upper computer/main.py中22行的record_path,将自己的文档路径添加进去
2. 如果要使用报警功能,请修改./upper computer/main.py中26行中的报警音频的路径路径为 $(your_path)/upper computer/电子报警.wav
界面展示
(ui设计太烂了,只是能用)