红联Linux门户
Linux帮助

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

发布时间:2017-05-24 09:58:41来源:blog.csdn.net/zmdsjtu作者:zmdsjtu
1.准备工作
Dlib库下载链接:http://dlib.net/
首先需要Cmake以及编译C++成Python程序的工具
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的目录运行,参考:http://www.linuxdiyf.com/linux/31029.html
运行:(如果提示没权限记得 sudo su)
python setup.py install
 
3.测试
python  
import dlib
无任何异常说明安装成功。
裸机Ubuntu16.04配置Dlib19.4(Python人脸检测例子)
 
4.运行人脸检测
下面来运行经典的Dlib的landmark
先安装下pip
sudo apt-get install python-pip python-dev build-essential   
sudo pip install --upgrade pip   
sudo pip install --upgrade virtualenv
然后安装skimage.io模块
sudo pip install scikit-image
或者
sudo apt-get install python-skimage
人脸检测
新建fr.py
#!/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]))
运行:
python fr.py 1.jpeg
效果如图:
裸机Ubuntu16.04配置Dlib19.4(Python人脸检测例子)
 
本文永久更新地址:http://www.linuxdiyf.com/linux/31028.html