废话:(其实是介绍了一下该文章的大概来路)
电子化的时代到处都能看到人脸识别的用途;比如:刷脸门禁,火车站检票口,又比如检查站,还有一些比较高端的汽车还支持刷脸开门等等。
近期呢接了个学校的一个项目有关于刷脸门禁的,我在CSDN上找了很多,确实有很多相关的博客参考但是怎么说呢总觉得还是差点意思。。。所以我自己写了一个,感兴趣的朋友拿来参考参考,还有个人能力有限如果文章有什么不足可以在评论区跟我留言我看到了会及时更改的。
废话不多说直接开始。
正文:
1.介绍:
本文中人脸识别的讲解分一下五个步骤去讲解:
第一步:人脸的采集
第二步:加载数据,返回目标值
第三步:加载算法
第四步:进行算法的训练,找到数据和目标之间的规律
第五步:动态加载数据
2.开始写各个函数:
2.1 人脸的采集
主要实现步骤是:先从摄像头捕获人脸,对获取到的人脸进行分类。把获取到的人脸转成灰度图片每一个人脸进行10张抓拍,并裁剪成64*64的大小(主要目的就是提高算法的速度,提升人脸识别的准确率);把图片写入到指定文件目录中,抓拍张数大于10时退出本次录入。
开始录入人脸之前先对每一个人脸创建新的文件夹进行获取到的人脸的保存。take_faces函数就是用来创建文件夹和命名人脸数据文件的。
下面就是代码啦:
2.2加载数据,返回目标值
主要步骤是先获取到我们第一步采集的人脸,按照人脸的名字,人脸 的关键点并且标签进行归类。对图片进行均衡化处理,为了就是图片颜色鲜明,方便分类;把人脸和标签进行数据化(计算机识别的数字,把获取到那些信息转成一堆数组和无序的数字来表达),最后把这些数据返回出来就行。
代码放这儿啦:
2.3算法的加载
目前流行的人脸识别算法为一些三种:
①EigenFaceRecognizer_create() ②FisherFaceRecognizer_create()
③LBPHFaceRecognizer_create()
通过实测发现:LBPH算法的准确率比其他三种算法高很多,所以本文选用LBPH算法作为人脸识别算法。下面供大家参考了,大家可以自行选择。
2.4算法训练,找到数据与检测到的目标之间的规律
用train方法进行匹配和关联
2.5动态加载数据
主要步骤是:先调用摄像头获取人脸,调用分类器进行人脸关键点来进行分类。灰度化并对获取人脸进行裁剪,对人脸进行判断。在终端里打印出此人是谁,置信度为多少。在动态画面中框出人脸,显示名字标签。
3.放个源码和演示视频
3.1源码
注意事项:
1.复制,剪贴使用源码时注意替换:分类器的绝对路径。换成自己的路径即可(相对和绝对路径的选择因人而异)
2.先屏蔽5,开启1;进行人脸的采集,采集成功后屏蔽1.开启5进行人脸的识别。
3.如果会用Qt的大佬可以用Qt来进行本项目的完善。(完善了记得在评论去喊我,我会给你点赞收藏的哟)
3.2视频演示
在我主页的视频那一栏我放了演示视频大家可以去看看(主要是这儿不能直接插入视频)。。。
最后:
最后希望能帮到大家,如果有什么问题可以私信,也可以留言,看到了就会回复和及时改进的。
下个项目再见。。。