您的位置:首页 > 编程语言 > Python开发

裸机Ubuntu16.04配置Dlib19.4 (Python人脸检测例子)

2018-03-01 15:03 627 查看
Windows版本Dlib配置链接:  地址

1.准备工作

Dlib库下载链接: 地址

首先需要Cmake以及编译C++成python程序的工具【参考1
[cpp] view plain copy sudo apt-get install libboost-python-dev cmake  

如果没有setuptools工具的需要安装,指令如下:
python2.x:
wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python


python3.x
wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python3.4

2.安装dlib

接着cd到Dlib的目录运行,参考:地址
运行:(如果提示没权限记得 sudo su)
[cpp] view plain copy python setup.py install  

3.测试

[cpp] view plain copy python  
import dlib  
无任何异常说明安装成功~



4.运行人脸检测

下面来运行经典的Dlib的landmark~

先安装下pip,参考链接:地址
[cpp] view plain copy sudo apt-get install python-pip python-dev build-essential   
sudo pip install --upgrade pip   
sudo pip install --upgrade virtualenv   

然后安装skimage.io模块,参考:地址[cpp] view plain copy sudo pip install scikit-image  
或者[cpp] view plain copy sudo apt-get install python-skimage  

人脸检测
新建fr.py
[python] view plain copy #!/usr/bin/python  
# The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt  
#  
#   This example program shows how to find frontal human faces in an image.  In  
#   particular, it shows how you can take a list of images from the command  
#   line and display each on the screen with red boxes overlaid on each human  
#   face.  
#  
#   The examples/faces folder contains some jpg images of people.  You can run  
#   this program on them and see the detections by executing the  
#   following command:  
#       ./face_detector.py ../examples/faces/*.jpg  
#  
#   This face detector is made using the now classic Histogram of Oriented  
#   Gradients (HOG) feature combined with a linear classifier, an image  
#   pyramid, and sliding window detection scheme.  This type of object detector  
#   is fairly general and capable of detecting many types of semi-rigid objects  
#   in addition to human faces.  Therefore, if you are interested in making  
#   your own object detectors then read the train_object_detector.py example  
#   program.    
#  
#  
# COMPILING/INSTALLING THE DLIB PYTHON INTERFACE  
#   You can install dlib using the command:  
#       pip install dlib  
#  
#   Alternatively, if you want to compile dlib yourself then go into the dlib  
#   root folder and run:  
#       python setup.py install  
#   or  
#       python setup.py install --yes USE_AVX_INSTRUCTIONS  
#   if you have a CPU that supports AVX instructions, since this makes some  
#   things run faster.    
#  
#   Compiling dlib should work on any operating system so long as you have  
#   CMake and boost-python installed.  On Ubuntu, this can be done easily by  
#   running the command:  
#       sudo apt-get install libboost-python-dev cmake  
#  
#   Also note that this example requires scikit-image which can be installed  
#   via the command:  
#       pip install scikit-image  
#   Or downloaded from http://scikit-image.org/download.html.   
  
import sys  
  
import dlib  
from skimage import io  
  
  
detector = dlib.get_frontal_face_detector()  
win = dlib.image_window()  
  
for f in sys.argv[1:]:  
    print("Processing file: {}".format(f))  
    img = io.imread(f)  
    # The 1 in the second argument indicates that we should upsample the image  
    # 1 time.  This will make everything bigger and allow us to detect more  
    # faces.  
    dets = detector(img, 1)  
    print("Number of faces detected: {}".format(len(dets)))  
    for i, d in enumerate(dets):  
        print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(  
            i, d.left(), d.top(), d.right(), d.bottom()))  
  
    win.clear_overlay()  
    win.set_image(img)  
    win.add_overlay(dets)  
    dlib.hit_enter_to_continue()  
  
  
# Finally, if you really want to you can ask the detector to tell you the score  
# for each detection.  The score is bigger for more confident detections.  
# The third argument to run is an optional adjustment to the detection threshold,  
# where a negative value will return more detections and a positive value fewer.  
# Also, the idx tells you which of the face sub-detectors matched.  This can be  
# used to broadly identify faces in different orientations.  
if (len(sys.argv[1:]) > 0):  
    img = io.imread(sys.argv[1])  
    dets, scores, idx = detector.run(img, 1, -1)  
    for i, d in enumerate(dets):  
        print("Detection {}, score: {}, face_type:{}".format(  
            d, scores[i], idx[i]))  

运行:[cpp] view plain copy python fr.py 1.jpeg  

效果如图:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dlib landmark