ubuntu14.04 + dlib19.2+【 C++ 】+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的根目录执行下面语句即可:
>>首先进入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相关推荐
- 【翻译】★VERTEBRA-FOCUSED LANDMARK DETECTION FOR SCOLIOSIS ASSESSMENT
VERTEBRA-FOCUSED LANDMARK DETECTION FOR SCOLIOSIS ASSESSMENT 聚焦脊柱的标志物检测for脊柱侧弯评估 来源:2020 IEEE 17th I ...
- ubuntu18.04卡在“【ok】Starting Gnome Display Manager“问题处理
ubuntu18.04卡在"[ok]Starting Gnome Display Manager"问题处理 目录标题 ubuntu18.04卡在"[ok]Starting ...
- 论文阅读(Xiang Bai——【arXiv2016】Scene Text Detection via Holistic, Multi-Channel Prediction)...
Xiang Bai--[arXiv2016]Scene Text Detection via Holistic, Multi-Channel Prediction 目录 作者和相关链接 方法概括 创新 ...
- 【Valve】Dead Thread Detection Valve
[Valve]Dead Thread Detection Valve 在Tomcat中,一个单独的用户的每个请求都会启动一条线程进行处理.由于web应用本身的bug(例如进入到一个死循环,导致久久不能 ...
- ubuntu14.04 upgrade出现【Ubuntu is running in low-graphics mode】问题的一个解决办法
在ubuntu14.04上安装docker的时候,由于眼花没看清下图这句话: 直接执行了sudo apt-get upgrade命令.然后发生了一个悲剧! 重启后出现下面这个错误! 而且在点击OK进入 ...
- 【论文|复现]Vertebra-Focused Landmark Detection For Scoliosis Assessment
来源:2020 IEEE 17th International Symposium on Biomedical Imaging (ISBI) [论文] 翻译 Abstract In this pape ...
- ubuntu server 14.04安装手册【转】
原创 ubuntu server 14.04安装手册 2019-01-26 22:13:23 baiduoWang 阅读数 1031更多 分类专栏: Linux 版权声明:本文为博主原创文章,遵循 C ...
- 17.04安装mysql_【17-04-11】 【求助】在线安装mysql时出现问题
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [root@localhost 桌面]# yum list | grep mysql One of the configured repositories ...
- Ubuntu18.04 快速返回桌面 【快捷键】
设置->设备->键盘->窗口->隐藏窗口 :双击重置快捷键
- 【论文阅读】【综述】3D Object Detection 3D目标检测综述
目录 写在开头 3D Object Detection 相关博客: Sliding window Vote3Deep: Fast Object Detection in 3D Point Clouds ...
最新文章
- PCL特征点与配准(1)
- linux内核 RCU机制概述
- VTK:隐式布尔值用法实战
- 宣布在日本地区正式发布 Windows Azure
- AT2070-[ARC061D]3人でカードゲーム/Card Game for Three【计数,组合数学】
- 将编号为0和1的两个栈存放于一个数组空间V[m]中。
- 【C语言】创建一个函数,并调用比较三个数的大小
- android 远程桌面 windows7,WIN7实现多用户远程桌面
- python图书馆管理系统 面向对象_python---面向对象程序设计之图书管理系统
- 有时我们经常碰到某目录下文件名乱码的情况,convmv可以批量转换文件名编码。...
- 文献阅读 Fully Convolutional Networks for Semantic Segmentation
- msys2+mingw32环境搭建
- 关于Aegisub的视频滤镜插件和字幕滤镜插件
- 全拼到缩写月份单词python_月份的英文缩写及全名
- android之标准体重
- 速查!你名下绑定了几个微信
- 产品生命周期管理(PLM)的内涵
- jmeter-same user on each interation
- 【Java SE】数组的打印方式
- 网络攻防——黛蛇蠕虫病毒