简易人脸识别系统
从无到有,基于 opencv 模块,以及开源的正面检测器,用 tkinter 实现的一个简易人脸识别系统
其中正面检测器是用别人开源的数据,即仓库源代码中的 data_haarcascades_haarcascade_frontalface_default.xml 文件
代码仓库地址:小康2022 / face_recognizer · GitCode
效果展示
界面样式
左上为摄像头开启时实时显示的画面,右上为开启人脸识别后识别度的显示(以绘图的方式,随时间移动),图中左上为识别情况(开启人脸识别后显示),右下为鼠标在图上的坐标,以百分数显示,右下小图是人脸识别的人脸,左下是一些操作及选择,中间下方为当前已有的模型(trainner文件夹中的),最下方是状态栏,状态栏右侧两个按钮,可以调节右上显示图的属性,左侧是一些说明。
选择模型
那三个模型是我之前已经训练好的,大家也可以在”录入数据“中训练属于自己的模型,训练数据越大(建议1000),识别效果越好。当然,代码仓库里面没有现成的模型,毕竟高识别度模型对于每个人都是不一样的。
打开摄像头
摄像头的调用是通过 opencv 模块实现的,调用摄像头需要一会儿时间,在调用的同时会读取选中的模型,模型越大,调用时间越久,但大多都在几秒内完成。如果没有选中模型,则只会打开摄像头,而不进行人脸识别。
调节摄像头参数
这个调节器是 opencv 自带的,有些人的摄像头可能不是默认值,可在这里将其设为默认值。
人脸识别
人脸识别是持续的,绿色的识别框会随着人脸的移动而移动,而右上的图会实时显示相关的数据
还有其他更多功能!
录入数据
数据的录入到形成模型有两个过程,先收集数据,再对收集的数据进行训练。
其中,收集数据时,摄像头会保持开启并持续拍摄照片,通过开源模型解析人脸得到数据,然后再对训练的数据进行训练,最终得到模型。数据收集过程可能会很漫长,但训练速度很快。
训练好模型后,训练材料(源码中data文件夹下)会被自动删除,毕竟几千个数据有点大,不过模型本身也比较大,一万个数据训练的模型的大小已经达到了 1.27GB 了,而且调用起来非常慢,识别时特别卡(或许是我电脑不太好),摄像头显示画面的左上有 FPS 显示。
还想了解更多的朋友,可以去代码仓库(前面给了地址)下载源码,自己运行并体验一下。
运行环境要求
要求 Python3.8 及以上版本,Python3.10 以上会更好一点,因为不同版本的 GUI 界面略有差异。
同时,运行需要的第三方模块有:numpy、cv2(基础的opencv-python模块和人脸识别需要的opencv-contrib-python模块)、PIL(pillow模块)