前言

dlib毕竟是一个很有名的库了,有c++、Python的接口。使用dlib可以大大简化开发,比如人脸识别,特征点检测之类的工作都可以很轻松实现。同时也有很多基于dlib开发的应用和开源库,比如face_recogintion库(应用一个基于Python的开源人脸识别库,face_recognition)等等。

环境安装

不算复杂,我只在Linux和win下跑过。安装配置不算难,直接贴链接了。
Linux下的安装在这篇博客中介绍了(应用一个基于Python的开源人脸识别库,face_recognition),不做赘述。
win下安装教程:
python 安装dlib和boost
Windows环境 安装dlib(python) 总结

程序

注:程序中使用了python-opencv、dlib,使用前请配置好环境。
程序中已有注释。

# -*- coding: utf-8 -*-
import sys
import dlib
import cv2detector = dlib.get_frontal_face_detector() #获取人脸分类器# 传入的命令行参数
for f in sys.argv[1:]:# opencv 读取图片,并显示img = cv2.imread(f, cv2.IMREAD_COLOR)# 摘自官方文档:# image is a numpy ndarray containing either an 8bit grayscale or RGB image.# opencv读入的图片默认是bgr格式,我们需要将其转换为rgb格式;都是numpy的ndarray类。b, g, r = cv2.split(img)    # 分离三个颜色通道img2 = cv2.merge([r, g, b])   # 融合三个颜色通道生成新图片dets = detector(img, 1) #使用detector进行人脸检测 dets为返回的结果print("Number of faces detected: {}".format(len(dets)))  # 打印识别到的人脸个数# enumerate是一个Python的内置方法,用于遍历索引# index是序号;face是dets中取出的dlib.rectangle类的对象,包含了人脸的区域等信息# left()、top()、right()、bottom()都是dlib.rectangle类的方法,对应矩形四条边的位置for index, face in enumerate(dets):print('face {}; left {}; top {}; right {}; bottom {}'.format(index, face.left(), face.top(), face.right(), face.bottom()))# 在图片中标注人脸,并显示left = face.left()top = face.top()right = face.right()bottom = face.bottom()cv2.rectangle(img, (left, top), (right, bottom), (0, 255, 0), 3)cv2.namedWindow(f, cv2.WINDOW_AUTOSIZE)cv2.imshow(f, img)# 等待按键,随后退出,销毁窗口
k = cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果

运行程序,后缀是图片的名称。

官方例程:

最后附上官方程序:

#!/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 sysimport dlib
from skimage import iodetector = 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 dlib学习(一):人脸检测相关推荐

  1. python dlib学习(三):调用cnn人脸检测

    前言 调用训练好的卷积神经网络(CNN)模型进行人脸检测. 模型下载链接:http://dlib.net/files/mmod_human_face_detector.dat.bz2 程序 注:使用了 ...

  2. python dlib学习(九):人脸聚类

    前言 前面的博客介绍过使用dlib进行人脸检测.比对.检测特征点等等操作. python dlib学习(一):人脸检测 python dlib学习(二):人脸特征点标定 python dlib学习(五 ...

  3. python dlib学习(八):训练人脸特征点检测器

    前言 前面的博客(python dlib学习(二):人脸特征点标定)介绍了使用dlib识别68个人脸特征点,但是当时使用的是dlib官方给出的训练好的模型,这次要自己训练一个特征点检测器出来.当然,想 ...

  4. python dlib学习(七):人脸特征点对齐

    前言 前面的博客介绍过人脸特征点标定:python dlib学习(二):人脸特征点标定.这次试着使用这些人脸特征点来对人脸进行对齐. 完整工程链接附在文章最后. 程序 上代码,程序中使用了python ...

  5. python dlib学习(五):比对人脸

    前言 在前面的博客中介绍了,如何使用dlib标定人脸(python dlib学习(一):人脸检测),提取68个特征点(python dlib学习(二):人脸特征点标定).这次要在这两个工作的基础之上, ...

  6. python dlib学习(二):人脸特征点标定

    前言 上次介绍了人脸检测的程序(python dlib学习(一):人脸检测),这次介绍人脸特征点标定.dlib提供了训练好的模型,可以识别人脸的68个特征点. 下载链接:http://pan.baid ...

  7. python dlib学习(十一):眨眼检测

    前言 我们要使用opencv和dlib实现在视频流中实时检测和计数眨眼次数. 参考论文:Real-Time Eye Blink Detection using Facial Landmarks 作者在 ...

  8. python dlib学习(十):换脸

    前言 这次再用dlib来做一个很酷的应用:换脸.在百度可以搜出一大堆转载的,里面虽然讲的不是很详细(数学部分),个人感觉大多数人对于奇异值分解.仿射变换矩阵 怎么实现根本不敢兴趣,只想上代码实现功能, ...

  9. python dlib学习(六):训练模型

    前言 前面的博客都是使用dlib官方提供的训练好的模型,进行目标识别. - python dlib学习(一):人脸检测 - python dlib学习(二):人脸特征点标定 - python dlib ...

  10. 深度学习在人脸检测中的应用 | CSDN 博文精选

    作者 | 梁志成.刘鹏.陈方杰 责编 | 唐小引 转载自CSDN(ID:csdnnews) 在目标检测领域,可以划分为人脸检测与通用目标检测,往往人脸这方面会有专门的算法(包括人脸检测.人脸识别.人脸 ...

最新文章

  1. nginx环境的搭建
  2. 重磅丨英伟达刚刚发布全球最大GPU:GTC2018黄仁勋演讲核心内容整理
  3. 转载:linux安装rlwrap软件包
  4. PHP-代码审计-审计第一步
  5. 14: linux实用命令
  6. richTextBoxFontClass
  7. I/O模型系列之四:两种高性能IO设计模式 Reactor 和 Proactor
  8. Kafka官方文档翻译——实现
  9. vc 通过句柄修改窗口大小_VC应用(1)通过VC修改销售订单行项目的字段
  10. [jQuery基础] jQuery动效案例(二) -- 图标特效、无限循环滚动(简易轮播图)
  11. 网关Spring Cloud Gateway的配置和使用
  12. JavaScript中的prototype(Notes)
  13. Python快速构建神经网络
  14. “敏捷项目管理就是胡闹!”
  15. 关于返回二维数组排序后序号数组的问题求解
  16. 对研发团队稳定性的思考
  17. hadoop1.0集群搭建
  18. 使用js调用摄像头拍照
  19. C++银行账户管理程序2
  20. 关于机器学习中鲁棒性和泛化能力

热门文章

  1. php内核函数手册,深入理解PHP内核(五)函数的内部结构,深入理解内部结构
  2. 【opencv】20.直方图均衡化的数学原理
  3. Java快速扫盲指南
  4. Chrome控制台使用详解 1
  5. 服务幂等以及常用实现方式
  6. 线性代数:第五章 相似矩阵及二次型(1)向量的内积 方阵的特征值与特征向量 相似矩阵
  7. 概率统计:第四章 随机变量的数字特征
  8. 图像检索中相似度度量公式:各种距离
  9. 乱入Linux界的我是如何学习的
  10. iOS 中strong,weak,copy,assign区别