【计算机视觉40例】案例32:定位人脸

导读】本文是专栏《计算机视觉40例简介》的第32个案例《定位人脸》。该专栏简要介绍李立宗主编《计算机视觉40例——从入门到深度学习(OpenCV-Python)》一书的40个案例。

目前,该书已经在电子工业出版社出版,大家可以在京东、淘宝、当当等平台购买。

大家可以在公众号“计算机视觉之光”回复关键字【案例32】获取本文案例的源代码及使用的测试图片等资料。

针对本书40个案例的每一个案例,分别录制了介绍视频。如果嫌看文字版麻烦,可以关注公众号“计算机视觉之光”直接观看视频介绍版。

本文简要介绍了本案例的一些基础知识,更详细的理论介绍、代码实现等内容请参考《计算机视觉40例简介》第27章《dlib》以获取更详细信息。

Dlib是一个现代工具包,包含机器学习算法和工具,用于在程序中构造软件来解决复杂的现实世界问题。它被工业界和学术界广泛应用于机器人、嵌入式设备、移动电话和大型高性能计算环境等领域。Dlib的开源许可允许用户在任何应用程序中免费使用它。

Dlib官网提供了非常翔实的资料,对它的函数有非常具体的使用说明。除此以外,Dlib官网还提供了大量的案例帮助我们快速掌握该工具的使用。

本章中,我们使用Dlib实现几个跟人脸识别相关的具有代表性的案例,具体如下:

  1. 定位人脸
  2. 绘制关键点
  3. 勾勒五官轮廓
  4. 人脸对齐
  5. 调用CNN实现人脸检测

本章中所使用的模型均可在Dlib官网下载。

在Dlib中提供了dlib.get_frontal_face_detecto生成人脸检测器。该人脸检测器采用了方向梯度直方图(Histogram of Oriented Gradient, HOG)、线性分类器、图像金字塔和滑动窗口检测等技术。上述类型的对象探测器具有通用性,除了能够检测人脸外,还能够检测多种类型的半刚性对象(semi-rigid object)。

使用Dlib构造和使用人脸检测器的方法如下:

步骤1构造人脸检测器

使用函数dlib.get_frontal_face_detector()生成人脸检测器detector,使用的语句为:

detector =dlib.get_frontal_face_detector()

步骤2:使用人脸检测器返回检测到的人脸框

使用上一步中所构造的人脸检测器detector,检测指定图像内的人脸。其语法格式为:

faces=detector(image,n)

式中,

  1. 返回值faces:返回当前检索图像内的所有人脸框。
  2. 参数image:要检测的可能含有人脸的图像。
  3. 参数n:表示采用上采样的次数,上采样会让图像变大,能够检测到更多人脸对象。

使用Dlib捕获图像内的人脸核心代码:

# -*- coding: utf-8 -*-
"""
Created on Thu Sep 16 16:37:22 2021
@author: 李立宗  [email protected]
微信公众号:计算机视觉之光(微信号cvlight)
计算机视觉40例——从入门到深度学习(OpenCV-Python)
李立宗 著     电子工业出版社
核心代码截取
"""

# dlib初始化
detector=dlib.get_frontal_face_detector()
# 读取原始图像
img=cv2.imread("people.jpg")
# 使用人脸检测器返回检测到的人脸框
faces=detector(img,1)
# 针对捕获到的多个人脸进行逐个处理
for face in faces:
    # 获取人脸框的坐标
    x1=face.left()
    y1=face.top()
    x2=face.right()
    y2=face.bottom()
    # 绘制人脸框
    cv2.rectangle(img,(x1,y1),(x2,y2),(0,255,0),2)

        

运行程序,运行结果如图1所示,它捕获了照片中的多个人脸。

 

1 运行结果

在《计算机视觉40例——从入门到深度学习(OpenCV-Python)》第27章《dlib》中详细介绍了定位人脸、绘制关键点、勾勒五官轮廓、人脸对齐、调用CNN实现人脸检测等案例。

《计算机视觉40例——从入门到深度学习(OpenCV-Python)》在介绍Python基础、OpenCV基础、计算机视觉理论基础、深度学习理论的基础上,介绍了计算机视觉领域内具有代表性的40个典型案例。这些案例中,既有传统的案例(数字识别、答题卡识别、物体计数、缺陷检测、手势识别、隐身术、以图搜图、车牌识别、图像加密、指纹识别等),也有深度学习案例(图像分类、风格迁移、姿势识别、实例分割等),还有人脸识别方面的案例(表情识别、驾驶员疲劳监测、识别性别与年龄等)。

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>