前言
人脸识别的源码放出来之后,不少小伙伴下载之后仍然不能运行成功。于是被逼无奈,把源代码改成了我认为最容易运行成功的版本。即使如此,我认为写下这个指南还是有必要的。因为反复回答相同的问题实在是太累人了。
重复一遍,本文环境为win7+vs2015+opencv3.2_with_contrib
源码下载地址
公众号回复:人脸识别源码
或者
网盘:
http://pan.baidu.com/s/1b1J23O
密码:kv1e
几个问题
首先还是说明几个问题,虽然都说过,但是还是有人问。以后再有人问就直接给他这篇文章。
找不到
FaceRecognizer
FaceRecognizer
在opencv的contrib模块里的face模块里面。而opencv官方下载的opencv默认是不带contrib的,要实现人脸识别需要用编译了contrib模块的opencv。一般来说需要自己编译。但是自己编译比较麻烦,网上有人分享了编译好的opencv3.2的版本。在公众号回复“opencv”获取下载地址,或者用下面的下载地址:
链接:
http://pan.baidu.com/s/1qYx3v8S
密码:i0c0
csv文件(也即at.txt)难以自动生成。
源码中我已经写了一个名为add_label.py
的python脚本,运行此脚本可以自动生成at.txt。
有时程序崩溃但是黑窗无报错信息。
一个可能的原因是,添加附加依赖项的时候,debug模式最好只添加*d.lib
。而release模式最好只添加*.lib
。
运行指南
方便起见,下载的源码的文件夹下已经包含了需要用的ORL人脸数据库。在配置好opencv的情况下,需要以下几步。
首先用VS打开
face-rec.sln
。在解决方案管理器中的源文件下添加take_photos.cpp
,如果源文件下还有其他cpp文件,请它们排除到项目之外。然后运行此拍照程序。如果拍照效果不好,请自动调整人脸与摄像头之间的距离,或者调节光照条件。拍好的照片会保存在att_faces\s41
文件夹下。生成csv文件。需要电脑上安装有Python2,如果是Python3的话需要把print语句注释掉,没有实际测试过。如果对python有了解,应该不难。在add_label.py所在文件夹下
shift+右键
然后选择在此处打开命令行窗口
。在命令行输入命令:python add_label.py
,Enter
运行即可。回到VS。把
take_photos.cpp
排除到项目之外,添加train.cpp
到源文件,运行。最后输出3行类似下面的语句表示训练模型成功。此时打开工程文件夹可以看到生成的后缀为xml的模型文件。Predicted class = 9 / Actual class = 9.
回到VS。把
train.cpp
排除到项目之外,添加rec-your-own-face.cpp
到源文件,运行。此时应该会打开摄像头并识别自己的脸。
最后
此人脸识别程序只能做学习研究,因为这个正确率略低。有更高要求的小伙伴请自行探究更好的方法,在这方面我能指点内容的有限。
另外
发现一个有意思的东西,小密圈。据说可能是最好的微信公众号读者论坛。也尝试一下,名字就叫OpenCV实践之路
。出了平时发文章之外,也会发一些我平时的参考资料,欢迎加入。