window+VS+OpenCV编译libfacedetection库进行人脸检测

    libfacedetection 是一个基于CNN的人脸检测的开源库。libfacedetection库是深圳大学的于仕琪老师发布的开源人脸检测库,相比于OpenCV自带的CascadeClassifier人脸检测,无论在速度上还是精度上,都有巨大的优势,是目前已知开源库中最好用的一款。CNN模型已在C源文件中转换为stastic variales。目前该项目已开放源码。源代码不依赖于任何其他库。你需要的只是一个C++编译器。您可以使用C ++编译器在Windows,Linux,ARM和任何平台下编译源代码。

代码地址:https://github.com/ShiqiYu/libfacedetection

                                                window+VS+OpenCV编译libfacedetection库进行人脸检测

模型文件也已在./models/ 目录中提供,使用Caffe训练得到。

源码文件也已在./src/ 目录中提供.

源码解读暂且放在一边,本文主要讲解如何在VS上编译该工程,并运行。

1、首先创建一个解决方案,win32控制台应用程序,确定,选择空项目,完成。

window+VS+OpenCV编译libfacedetection库进行人脸检测

2、将下载的源代码放在项目目录下

window+VS+OpenCV编译libfacedetection库进行人脸检测

上述4个文件放在项目文件下,即下图中的facedetection文件夹下

 window+VS+OpenCV编译libfacedetection库进行人脸检测

放好之后如下所示:

window+VS+OpenCV编译libfacedetection库进行人脸检测

3、依次添加头文件和源文件

添加现有项,找到项目目录下的头文件,进行添加

window+VS+OpenCV编译libfacedetection库进行人脸检测

同理源文件也一样(4个),进行添加,添加完毕如下图所示:

                                          window+VS+OpenCV编译libfacedetection库进行人脸检测

随后,我们创建一个main.c文件,将“libfacedetectcnn-example.cpp”内的代码复制一份,拷贝到新建的main.c文件内。

window+VS+OpenCV编译libfacedetection库进行人脸检测

如下图:

window+VS+OpenCV编译libfacedetection库进行人脸检测

 4、设置包含目录

进行完第三步,可能会出现错误“#include "facedetectcnn.h",显示无法打开源文件,我们右击解决方案,选择“属性”--“VC++目录”--“包含目录”,填入facedetectcnn.h头文件所在路径,即可。

window+VS+OpenCV编译libfacedetection库进行人脸检测

5、运行

该main函数是通过argv[]传递参数,因此我们要把人脸图像传递给命令参数,

点击“调试”---“facedetection属性页”---“调试”---“命令参数”,在弹出的命令参数窗口中输入你的图像(注意如果你的图像不在项目路里,要添加路径才行,不然会读取失败),我的图像“1.jpg放在项目目录下,所以之间填写图像名即可”如下:

window+VS+OpenCV编译libfacedetection库进行人脸检测

运行结果:

 window+VS+OpenCV编译libfacedetection库进行人脸检测

检测效果还是很牛逼的!!!

从图中我们发现有误检测,这里我们可以对confidence做一个简单的阈值处理,添加一行代码即可,“if(confidence>40)”,这样人脸confidence分数小于40的,就不会在图像中画出矩形框,结果如下:

window+VS+OpenCV编译libfacedetection库进行人脸检测

window+VS+OpenCV编译libfacedetection库进行人脸检测

搞定!

源码解读,敬请期待!