我是靠谱客的博主 满意小笼包,这篇文章主要介绍ubuntu14.04 + dlib19.2+【 C++ 】+Face Landmark Detection1、安装dlib2、 C++编译dlib3、 新建dlib工程4、 dlib下examples中的Face Landmark Detection功能实现鸣谢,现在分享给大家,希望可以做个参考。

1、安装dlib

dlib官网这里好像只有最新的dlib版本包,下载选项在左下角有个蓝色的按钮,写着download
这里写图片描述
博主用的还是目前最新的版本19.2,因为最新的dlib版本添加了一些新的人脸检测器,mmod+cnn算法,可以看看dlib的blog。
这里写图片描述

2、 C++编译dlib

如果你是使用的C++,那么很简单,不用安装,直接按照官网的指示(也是在官网首页,左边栏目里有个how to compile,这个指示只是交你怎么快速使用dlib库中的examples).
从官网下载的dlib文件如下:
这里写图片描述

从dlib的根目录执行下面语句即可:

复制代码
1
2
3
4
5
6
7
>>首先进入dlib的根目录下 >>再执行如下语句: cd examples #进入dlib下的examples文件夹 mkdir build #新建build文件夹,存放cmake编译后的执行文件 cd build #进入新建好的build文件夹 cmake .. #cmake编译examples整个文件夹 cmake --build . --config Release

最终,dlib/examples/build文件夹如下:

这里写图片描述

这只是编译好了examples下的dlib,要想编译整个dlib库,则执行以下代码即可:

复制代码
1
2
3
4
5
6
>>进入dlib根目录下 mkdir build cd build cmake .. make release=1

3、 新建dlib工程

如果要自己建立工程,可以仿照dlib/examples/CMakeLists.txt,直接include(dlib/dlib/cmake)文件即可。
在其他地方新建工程(不要放dlib根目录下),首先新建一个文件夹放置工程,进入文件夹下,新建CMakeList.txt文件,可以采用vim指令编辑,如下参考如下代码:

复制代码
1
2
vim CMakeList.txt

再将如下代码复制到CMakeList.txt中:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
cmake_minimum_required(VERSION 2.8.4) #版本最小为2.8.4 PROJECT(dlib_facedetector) #设置工程名 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2 -DDLIB_JPEG_SUPPORT") IF(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Weverything") ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") ENDIF() #INCLUDE OPENCV FIND_PACKAGE(OpenCV REQUIRED) INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS}) message(STATUS "Opencv include dir found at ${OpenCV_INCLUDE_DIRS}") #包含头文件 INCLUDE_DIRECTORIES(/home/fr/fr/dlib) #dlib根目录地址 LINK_DIRECTORIES(/home/fr/fr/dlib/build/dlib/) #dlib编译后bulid下dlib地址 #生产类似于.exe的可执行文件 ADD_EXECUTABLE(dlib_detector dlib_test.cpp) #链接库 TARGET_LINK_LIBRARIES(dlib_detector dlib ${OpenCV_LIBS}) #TARGET_LINK_LIBRARIES(dlib_detector libjpeg.so)

以上代码含OpenCV。
然后再自己vim test.cpp文件,编译执行,编译代码如下:

复制代码
1
2
3
4
5
>>在自己建的工程文件夹下新建build文件夹 mkdir build cd build cmake .. make -j8 #用make也行

编译正确后,在build文件夹中会出现dlib_detector:
这里写图片描述
这就是我们需要的可执行文件。
然后再执行.cpp文件,执行代码如下:

复制代码
1
2
>>在build文件夹下继续执行一行代码即可显示结果: ./dlib_detector

注意:一旦我们修改过CMakeList.txt,我们需要将之前编译过的build文件删除掉,重新新建编译过一次

复制代码
1
2
3
4
5
6
>>在工程目录下删除build文件夹,用rm -r指令 rm -r build mkdir build cd build cmake .. make -j8

4、 dlib下examples中的Face Landmark Detection功能实现

按上述方法新建好了一个工程,将官网给的例程复制在我们的.cpp中。
该算法来源于One Millisecond Face Alignment with an Ensemble of Regression Trees by Vahid Kazemi and Josephine Sullivan, CVPR 2014

复制代码
1
2
3
4
5
6
7
8
if (argc == 1) { cout << "Call this program like this:" << endl; cout << "./face_landmark_detection_ex shape_predictor_68_face_landmarks.dat faces/*.jpg" << endl; cout << "nYou can get the shape_predictor_68_face_landmarks.dat file from:n"; cout << "http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2" << endl; return 0; }

首先要去官网下载面部特征点检测模型,接着进行解压。这是一个.bz2的压缩文件,不是.dat.bz2,不要搞错了。解压代码可以参考我之前的一篇博客:Ubuntu解压命令集

复制代码
1
bunzip2 shape_predictor_68_face_landmarks.dat.bz2

注意,编译通过后运行.cpp根据程序内容,代码如下:

复制代码
1
./dlib_detector ../shape_predictor_68_face_landmarks.dat ../*.jpg # ../*.jpg为实验图片地址

需要将源码给出的./face_landmark_detection_ex换成我们自己生成的./dlib_detector可执行文件
运行最后结果:
这里写图片描述

小图为7个人脸被剪切出来的图,已对齐。大图为7个人脸的68个特征点定位图。
这里写图片描述

博主用自己的头像做了一次实验,结果如下:
这里写图片描述

我故意歪了一定角度的头,可以看到,小图中人脸已经矫正了。

关于人脸检测,对齐,识别等过程,可详见《人脸识别笔记:Deep Face Recognition》 ,写得很详细。

这里写图片描述
上图来源于:http://www.cnblogs.com/cv-pr/p/5438351.html

鸣谢

博主师兄 Michaelliu_dev 亲临指导,感谢师兄写的blog。

最后

以上就是满意小笼包最近收集整理的关于ubuntu14.04 + dlib19.2+【 C++ 】+Face Landmark Detection1、安装dlib2、 C++编译dlib3、 新建dlib工程4、 dlib下examples中的Face Landmark Detection功能实现鸣谢的全部内容,更多相关ubuntu14.04内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部