1、安装dlib

dlib官网这里好像只有最新的dlib版本包,下载选项在左下角有个蓝色的按钮,写着download

博主用的还是目前最新的版本19.2,因为最新的dlib版本添加了一些新的人脸检测器,mmod+cnn算法,可以看看dlib的blog。

2、 C++编译dlib

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

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

>>首先进入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库,则执行以下代码即可:

>>进入dlib根目录下
mkdir build
cd build
cmake ..
make release=1

3、 新建dlib工程

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

vim CMakeList.txt

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

cmake_minimum_required(VERSION 2.8.4)  #版本最小为2.8.4PROJECT(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文件,编译执行,编译代码如下:

>>在自己建的工程文件夹下新建build文件夹
mkdir build
cd build
cmake ..
make -j8 #用make也行

编译正确后,在build文件夹中会出现dlib_detector:

这就是我们需要的可执行文件。
然后再执行.cpp文件,执行代码如下:

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

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

>>在工程目录下删除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

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解压命令集

bunzip2 shape_predictor_68_face_landmarks.dat.bz2

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

./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 Detection相关推荐

  1. 【翻译】★VERTEBRA-FOCUSED LANDMARK DETECTION FOR SCOLIOSIS ASSESSMENT

    VERTEBRA-FOCUSED LANDMARK DETECTION FOR SCOLIOSIS ASSESSMENT 聚焦脊柱的标志物检测for脊柱侧弯评估 来源:2020 IEEE 17th I ...

  2. ubuntu18.04卡在“【ok】Starting Gnome Display Manager“问题处理

    ubuntu18.04卡在"[ok]Starting Gnome Display Manager"问题处理 目录标题 ubuntu18.04卡在"[ok]Starting ...

  3. 论文阅读(Xiang Bai——【arXiv2016】Scene Text Detection via Holistic, Multi-Channel Prediction)...

    Xiang Bai--[arXiv2016]Scene Text Detection via Holistic, Multi-Channel Prediction 目录 作者和相关链接 方法概括 创新 ...

  4. 【Valve】Dead Thread Detection Valve

    [Valve]Dead Thread Detection Valve 在Tomcat中,一个单独的用户的每个请求都会启动一条线程进行处理.由于web应用本身的bug(例如进入到一个死循环,导致久久不能 ...

  5. ubuntu14.04 upgrade出现【Ubuntu is running in low-graphics mode】问题的一个解决办法

    在ubuntu14.04上安装docker的时候,由于眼花没看清下图这句话: 直接执行了sudo apt-get upgrade命令.然后发生了一个悲剧! 重启后出现下面这个错误! 而且在点击OK进入 ...

  6. 【论文|复现]Vertebra-Focused Landmark Detection For Scoliosis Assessment

    来源:2020 IEEE 17th International Symposium on Biomedical Imaging (ISBI) [论文] 翻译 Abstract In this pape ...

  7. ubuntu server 14.04安装手册【转】

    原创 ubuntu server 14.04安装手册 2019-01-26 22:13:23 baiduoWang 阅读数 1031更多 分类专栏: Linux 版权声明:本文为博主原创文章,遵循 C ...

  8. 17.04安装mysql_【17-04-11】 【求助】在线安装mysql时出现问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [root@localhost 桌面]# yum list | grep mysql One of the configured repositories ...

  9. Ubuntu18.04 快速返回桌面 【快捷键】

    设置->设备->键盘->窗口->隐藏窗口 :双击重置快捷键

  10. 【论文阅读】【综述】3D Object Detection 3D目标检测综述

    目录 写在开头 3D Object Detection 相关博客: Sliding window Vote3Deep: Fast Object Detection in 3D Point Clouds ...

最新文章

  1. PCL特征点与配准(1)
  2. linux内核 RCU机制概述
  3. VTK:隐式布尔值用法实战
  4. 宣布在日本地区正式发布 Windows Azure
  5. AT2070-[ARC061D]3人でカードゲーム/Card Game for Three【计数,组合数学】
  6. 将编号为0和1的两个栈存放于一个数组空间V[m]中。
  7. 【C语言】创建一个函数,并调用比较三个数的大小
  8. android 远程桌面 windows7,WIN7实现多用户远程桌面
  9. python图书馆管理系统 面向对象_python---面向对象程序设计之图书管理系统
  10. 有时我们经常碰到某目录下文件名乱码的情况,convmv可以批量转换文件名编码。...
  11. 文献阅读 Fully Convolutional Networks for Semantic Segmentation
  12. msys2+mingw32环境搭建
  13. 关于Aegisub的视频滤镜插件和字幕滤镜插件
  14. 全拼到缩写月份单词python_月份的英文缩写及全名
  15. android之标准体重
  16. 速查!你名下绑定了几个微信
  17. 产品生命周期管理(PLM)的内涵
  18. jmeter-same user on each interation
  19. 【Java SE】数组的打印方式
  20. 网络攻防——黛蛇蠕虫病毒

热门文章

  1. 学校做计算机教室锐捷,锐捷“云课堂”:先改变桌面云,再改变教室
  2. word参考文献[10]之后不对齐
  3. Maven:mvn 命令的基本使用
  4. 微信小程序-引入iconfont图标
  5. 小程序公众图标素材+6113个菜单栏素材
  6. 【C语言】状态机编程
  7. 移动友华PT924光猫获取超级用户方法
  8. SIP信令协议消息(四)
  9. linux下visual studio code安装cpptools-linux.vsix插件
  10. 常用邮箱接收邮件服务器与发送邮件服务器列表