特别说明
这是几年前的帖子了,当时于仕琪老师的libfacedetection库和现在有很大不同,尤其是2018年以后,引入了CNN方法,并且完全开源了。想要用最新版Demo的童鞋,直接在于仕琪老师的GitHub里面下载学习即可。需要早期版本的童鞋,可以点击下载 (百度网盘提取码: vqpd)
——本文作者
1. 前言
libfacedetection库是深圳大学的于仕琪老师发布的开源人脸检测库,相比于OpenCV自带的CascadeClassifier人脸检测,无论在速度上还是精度上,都有巨大的优势,是目前已知开源库中最好用的一款。
本文通过学习libfacedetection库中的example,进行人脸检测程序的简单实现。
2. 开发环境
- OpenCV3.3
- Windows 10 64位
- Visual Studio 2013 Ultimate
3. 配置过程
3.1 libfacedetection的下载
在GitHub上下载libfacedetection的最新库文件(https://github.com/ShiqiYu/libfacedetection)
3.2 新建VS工程
将下载好的libfacedetection文件夹中的几个文件拖拽到faceDetection工程的根目录,包括——
- libfacedetect-x64.dll
- libfacedetect-x64.lib
- facedetect-dll.h
####3.3 配置VS属性
先配置opencv
然后在链接器中配置libfacedetection的库文件,注意,64位的要配置成libfacedetect-x64.lib
注意,libfacedetection库中使用了比较底层的fopen函数,VS2013对fopen报编译错误,需要设置如下——
在C++命令行中添加 /D _CRT_SECURE_NO_WARNINGS
4. 源代码示例
这是对libfacedetection文件中example进行的修改使用,example提供了4个人脸检测函数,分别是facedetect_frontal、facedetect_frontal_surveillance、facedetect_multiview、facedetect_multiview_reinforce,四个函数应该是对应不同的使用场景,性能有所不同,但参数类型完全一致,可以根据需要进行调整。
该代码使用了 facedetect_multiview 和 OpenCV自带的CascadeClassifier进行比较,可以看出于仕琪老师的libfacedetection具有更强的性能。
#include"facedetect-dll.h"
#include<iostream>
#include<opencv2\opencv.hpp>