前言
前段时间看了一篇帖子老板来了:人脸识别+手机推送,老板来了你立刻知道。作者利用face_recognition
+jpush-api-python-client
的方式完成了办公室摄像头识别BOSS脸型,自动手机推送同时切换电脑屏幕的功能。点子不错,也启发了我也许可以做个自动人脸识别签到的小应用,可以用在上课,晚宴,会展等需要签到的场景。
效果展示
环境
- Python 3.6.1
- Windows 7 64位
- PyCharm 2017.1.4
策略
需要用到的库
face_recognition(基于dlib的人脸检测,识别率高达99.38%,比OpenCV更好用)
安装:
1
pip install face_recognition
如果安装过程中出现问题,99%都是安装依赖的库时出现了问题,这货安装依赖较多:boost(boost_python),cmake,dlib这几个依赖和库,中间出现任何问题都可以通过Google解决(回头我写篇帖子吧这个坑填上)。
cv2 (用来获取对网络摄像头的引用)
csv(用来创建并写入签到表)
time(获取签到时间)
思路
1.将所有宾客人员的头像照片放在同一个文件夹下,并将文件名设置为人员姓名
(由于CV2不能识别中文,这里只能用英文表示)。
2.利用face_recognition
识别宾客人员集(学习集),并将人脸姓名
、人脸参数
形成一个dict
等待调用。
3.用CV2
调用摄像头,抓取单帧视频 ,用face_recognition
在视频框架中查找所有的人脸,对比学习集中每张脸,查看是否与已知面孔匹配,识别匹配后在视频中标记姓名,并将姓名
和签到时间
写入签到名单.csv
。
4.用CV2
检测指定按键,当点击键盘上的 “f”时, 显示当前签到状态(名册总人数、目前已签到人数、未签到名单)。
建立学习集
将所有宾客人员的头像照片放在同一个文件夹下并改好文件名后
在项目根目录下建立一个guests_collections.py
写入代码:
1 | import os |
这里的Learning , all_num , all_mames都是等待下一步主程序调用的
代码
在项目根目录下建立主程序,并写入代码:
1 | # -*- coding:utf-8 -*- |
每一步我都做了注释,应该不难理解。