macOS配置DLib

写在前面

首先,不要使用Homebrew安装,我用brew install dlib安装后,运行例子提示错误

1
2
error: "DLIB_NO_GUI_SUPPORT is defined so you can't use the GUI code. Turn DLIB_NO_GUI_SUPPORT off if you want to use it."
error: "Also make sure you have libx11-dev installed on your system"

查询相关资料说是需要安装XQuartz,可我已经通过brew cask install xquartz安装了,而且也有人说安装后还是不行,仍然报错,最后发现作者说不要通过Homebrew安装,因为Homebrew中所有的dlib版本默认都设置为不使用X11,下面是作者在GitHub-Issues回答的原话:

1
Don't use homebrew.  Whatever copy of dlib is in homebrew is configured to not use X11.

所以需要按照官网提供的教程进行安装。

编译

卸载通过Homebrew安装的dlib,命令如下:

1
brew uninstall dlib

因为我已经安装了XQuartz,如果没有安装,还需要通过官网安装包或者brew cast进行安装。

接下来编译dlib

1
2
3
4
5
git clone https://github.com/davisking/dlib.git
cd dlib/examples
mkdir build
cmake ..
cmake --build . --config Release

经过漫长的编译过程后,就可以测试其中的例子了,如人脸关键点检测例子。借助dlib官网提供的训练好的模型文件,再提供一张带人脸的图片,便可以定位人脸的68个关键点了。

1
./face_landmark_detection_ex shape_predictor_68_face_landmarks.dat faces/2008_002506.jpg

结果如下图所示
face_landmark_detection_68_res

官网提供的模型只能定位68个关键点,不过你可以通过作者给的例子自己训练新的模型。

测试

当然,你也可以在你自己的项目中使用dlibCMakeLists.txt如下

1
2
3
4
5
6
7
8
9
10
project(hello)
cmake_minimum_required(VERSION 2.8)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_subdirectory(/Users/liwei/myLibs/dlib/dlib ./dlib_build)
aux_source_directory(./src SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})
target_link_libraries(${PROJECT_NAME} dlib::dlib)

参考