pythonhog函数 python @函数( 三 )


1.人脸检测
dlib-18.17/python_examples/face_detector.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 THE DLIB PYTHON INTERFACE#Dlib comes with a compiled python interface for python 2.7 on MS Windows. If#you are using another python version or operating system then you need to#compile the dlib python interface before you can use this file.To do this,#run compile_dlib_python_module.bat.This 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 -U scikit-image#Or downloaded from . import sys
import dlib
from skimage import io
detector = dlib.get_frontal_face_detector()
win = dlib.image_window()
print("a");for f in sys.argv[1:]:
print("a");
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.# 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)for i, d in enumerate(dets):
print("Detection {}, score: {}, face_type:{}".format(
d, scores[i], idx[i]))123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
我把源代码精简了一下,加了一下注释: face_detector0.1.py
# -*- coding: utf-8 -*-import sys
import dlib
from skimage import io#使用dlib自带的frontal_face_detector作为我们的特征提取器detector = dlib.get_frontal_face_detector()#使用dlib提供的图片窗口win = dlib.image_window()#sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始向后依次获取图片路径for f in sys.argv[1:]:#输出目前处理的图片地址
print("Processing file: {}".format(f))#使用skimage的io读取图片
img = io.imread(f)#使用detector进行人脸检测 dets为返回的结果
dets = detector(img, 1)#dets的元素个数即为脸的个数
print("Number of faces detected: {}".format(len(dets)))#使用enumerate 函数遍历序列中的元素以及它们的下标
#下标i即为人脸序号

推荐阅读