dlib初步安装及测试

dlib

dlib是一套包含了机器学习、计算机视觉、图像处理等的函数库,使用C++开发而成,目前广泛使用于工业及学术界,也应用于机器人、嵌入式系统、手机、甚至于大型的运算架构中,而且最重要的是,它不但是开源的而且还可以跨平台使用(Linux、Mac OS 、Windows),并且还提供了Python API。开发者是Davis King

dlib依赖

  • dlib安装需要依赖库有openblasopencv。可以直接使用brew安装。

    1
    2
    3
    4
    $ brew install openblas

    $ brew install opencv3 --with-python3 --c++11 --with-contrib
    $ brew link --force opencv3

    安装opencv可以参考这个,出现的问题有详细的说明

  • Mac下安装X11

    X11是执行Unix程序的图形窗口环境。Mac OS X本身的程序是Aqua界面的,但是为了能够兼容unixlinux移植过来的程序(Mac OS X由BSD-UNIX修改而来),比如MatLab,就需要x11窗口环境。

    运行dlib需要X11,但Mac目前没有自带X11,需要重新下载安装,下载地址为:https://www.xquartz.org/,下载后直接安装,默认安装目录为/opt/X11,需要在/usr/loca/opt目录下创建软连接,创建命令如下,创建后重启Mac。

    1
    2
    3
    $ cd /usr/local/opt

    $ ln -s /opt/X11 X11dlib

dlib安装

  • 下载dlib,也可直接去Git下载

    1
    git clone https://github.com/davisking/dlib.git
  • 下载后解压,安装dlib

    1
    2
    3
    4
    5
    cd dlib/examples
    mkdir build
    cd build
    cmake .. -DUSE_SSE4_INSTRUCTIONS=ON
    cmake --build . --config Release
  • 安装python模块

    1
    2
    3
    4
    5
    6
    7
    8
    cd dlib

    sudo python setup.py install

    python

    # 不报错,说明安装python模块成功
    import dlib

Demo

  • 检测人脸

    1
    2
    3
    4
    5
    6
    7
    8
    cd dlib/examples/build/

    #下载face landmark模型
    wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2

    # 解压文件

    ./webcam_face_pose_ex
  • 利用python十行代码进行人脸检测

    首先需要安装相关依赖库

    1
    2
    3
    4
    brew install boost
    brew install boost-python
    pip install dlib
    pip install scikit-image

    具体代码main.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import dlib
    from skimage import io
    from skimage.draw import polygon_perimeter

    detector = dlib.get_frontal_face_detector()
    sample_image = io.imread('目标图片')
    faces = detector(sample_image, 1)

    for d in faces:
    rr, cc = polygon_perimeter([d.top(), d.top(), d.bottom(), d.bottom()], [d.right(), d.left(), d.left(), d.right()])
    sample_image[rr, cc] = (0, 255, 0)
    io.imsave('识别后新生成图片', sample_image)

我是使用python3执行main.py的,需要注意的是要将shape_predictor_68_face_landmarks.dat.bz2的解压文件和main.py放在同一目录下