• 【计算机视觉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捕获图像内的人脸核心代码:

    1. # -*- coding: utf-8 -*-
    2. """
    3. Created on Thu Sep 16 16:37:22 2021
    4. @author: 李立宗 lilizong@gmail.com
    5. 微信公众号:计算机视觉之光(微信号cvlight)
    6. 计算机视觉40例——从入门到深度学习(OpenCV-Python)
    7. 李立宗 著 电子工业出版社
    8. 核心代码截取
    9. """
    10. # dlib初始化
    11. detector=dlib.get_frontal_face_detector()
    12. # 读取原始图像
    13. img=cv2.imread("people.jpg")
    14. # 使用人脸检测器返回检测到的人脸框
    15. faces=detector(img,1)
    16. # 针对捕获到的多个人脸进行逐个处理
    17. for face in faces:
    18. # 获取人脸框的坐标
    19. x1=face.left()
    20. y1=face.top()
    21. x2=face.right()
    22. y2=face.bottom()
    23. # 绘制人脸框
    24. 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个典型案例。这些案例中,既有传统的案例(数字识别、答题卡识别、物体计数、缺陷检测、手势识别、隐身术、以图搜图、车牌识别、图像加密、指纹识别等),也有深度学习案例(图像分类、风格迁移、姿势识别、实例分割等),还有人脸识别方面的案例(表情识别、驾驶员疲劳监测、识别性别与年龄等)。

     

  • 相关阅读:
    [100天算法】-目标和(day 79)
    c++ 二元运算符重载, 以加法为例
    以软件定义物联网芯片,以技术融合推动LPWAN2.0泛在物联
    首个集成AI的国产操作系统带来了哪些惊喜
    【RV1103】Luckfox Pico RV1103 开发记录
    船舶IMO识别码是什么?
    循环掌控:深入理解C语言循环结构,高效实现重复性任务
    开启AWS的ubuntu服务器的root用户登录权限
    荣誉榜再度添彩!热烈祝贺旭帆科技荣获安徽省大数据企业!
    vue之组件传值---父传子(属性)---子传父(emit,sync,v-model)
  • 原文地址:https://blog.csdn.net/superdont/article/details/126298719