下载dlib
- dlib官网这里好像只有最新的dlib版本包,下载选项在左下角有个蓝色的按钮,写着download
- 如果不想下载最新版本,也可以从github上下载,这里能下到各种版本的dlib,你只需要在branch那一栏点击tag,有一个下拉菜单可以有各种版本的dlib
博主用的还是目前最新的版本19.2,因为最新的dlib版本添加了一些新的人脸检测器,mmod+cnn算法,可以看看dlib的blog。
C++编译和使用dlib
如果你是使用的C++,那么很简单,不用安装,直接按照官网的指示(也是在官网首页,左边栏目里有个how to compile,这个指示只是交你怎么快速使用dlib库中的examples),从dlib的根目录执行下面语句即可:
cd examples
mkdir build
cd build
cmake ..
cmake --build . --config Release
这样就可以生成examples文件中的各种执行文件。
如果要自己建立工程,可以仿照dlib/examples/CMakeLists.txt,直接include(dlib/dlib/cmake)文件即可,如下:
cmake_minimum_required(VERSION 2.8.4)
PROJECT(dlib_test)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2")
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(/home/hpc/Michael/dlib/dlib/cmake)
ADD_EXECUTABLE(dlib_test dlib_test.cpp)
TARGET_LINK_LIBRARIES(dlib_test dlib)
或者如下自己写个CMakeLists.txt包含所用到的文件,但是用这种方法要先在dlib库根目录下编译dlib,即先执行下列操作:
mkdir build
cd build
cmake ..
make release=1
记住以上操作是编译dlib,所以是在dlib的更目录下执行。
cmake_minimum_required(VERSION 2.8.4)
PROJECT(dlib_test)
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_DIRECTORIES(/home/hpc/Michael/dlib) #dlib.h
LINK_DIRECTORIES(/home/hpc/Michael/dlib/build/dlib/)
ADD_EXECUTABLE(dlib_test dlib_test.cpp)
TARGET_LINK_LIBRARIES(dlib_test dlib)
python使用
在dlib18.18之前好像挺麻烦的,但是在dlib18.18版本后有setup.py文件,安装方便的多,直接在dlib的根目录下运行如下语句即可:
python setup.py install
但是博主电脑不好使了,我用的是anaconda2,不是系统自带的python,报错说没有权限(大概Permission denied: ‘/usr/local/anaconda2/’是这个错误),当我加上sudo运行后报错,说找不到setuptools的包。
博主安装setuptools包,安装方法按照python官网setuptools安装方法,执行如下语句:
wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
待setuptools安装完成后,执行
sudo python setup.py install
在尝试运行demo时,即运行 ./face_detector.py ../examples/faces/*.jpg
时,报错 undefined symbol: _ZN4dlib12pixel_traitsINS_9rgb_pixelEE3numE
没找到什么原因,google了一下,dlib作者给出方法(https://github.com/davisking/dlib/issues/389)就是下最新版本的dlib,于是我有从github上 git clone
了一个最新的版本。
安装上面方法重新安装,然后运行demo,又可以用了,运行python demo的方法如下:
cd python_examples
python face_detector.py ../examples/faces/*.jpg
当你能看到运行输出结果,说明安装成功了。
当自己新建一个python文件,如我将dlib/python_examples/face_detector.py 拷贝到~/learn_dlib/下,在执行该文件,会显示ImportError: No module named dlib,说明找不到dlib库,这时候可以运行:
sudo ln -s /usr/local/lib/python2.7/dist-packages/dlib-19.2.99-py2.7-linux-x86_64.egg/dlib/dlib.so /usr/local/anaconda2/lib/python2.7/site-packages/
其中ln -s <源文件> <目标文件>表示将源文件和目标文件建立软连接,因为博主用的是anaconda的python,所以将/usr/local/lib/python2.7/dist-packages/dlib-19.2.99-py2.7-linux-x86_64.egg/dlib/(此路径是用locate dlib.so
查找出来的)里的dlib.so文件和anaconda的查找库的路径/usr/local/anaconda2/lib/python2.7/site-packages/建立软连接,这样即可导入dlib库
可以在终端运行:
python
进入python的编译环境,然后输入:
import dlib
查看是否能够顺利导入
鸣谢同学刘老师的指导,和深图智服陈大神的指导,发不了表情让我很纠结。