# opencv：使用dlib进行人脸检测（python）

## 人脸检测

### Dlib

DLIB是包含机器学习算法和工具，一个现代化的C ++工具包。它在工业界和学术界使用非常广泛，包括机器人，嵌入式设备，移动电话，和高性能的计算环境。 DLIB有开源许可，因此可以在任何应用程序中免费使用。

pip install dlib
pip install opencv-python

import cv2
import sys
import dlib

detector = dlib.get_frontal_face_detector()  # init detector

img_file = sys.argv[1]
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # convert to gray img to speed
faces = detector(img_gray, 1)  # detect input img, para 1 means 1 times upsamle
for face in faces:  # may be many faces in one image
print(face)
y1 = face.bottom()  # detect box bottom y value
y2 = face.top()  # top y value
x1 = face.left()  # left x value
x2 = face.right()  # right x value
print(x1, x2, y1, y2)
# add detect box in image
cv2.rectangle(img,(int(x1),int(y1)),(int(x2),int(y2)),(0,255,0),3)

cv2.imshow('new.jpg', img)
cv2.waitKey(0)
python test.py image1

[(161, 247) (546, 632)]
161 546 632 247

#!/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
#   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
#
#   Compiling dlib should work on any operating system so long as you have
#   CMake installed.  On Ubuntu, this can be done easily by running the
#   command:
#       sudo apt-get install cmake
#
#   Also note that this example requires Numpy which can be installed
#   via the command:
#       pip install numpy

import sys

import dlib

detector = dlib.get_frontal_face_detector()
win = dlib.image_window()

for f in sys.argv[1:]:
print("Processing file: {}".format(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)
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):
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]))

+ 订阅