【计算机视觉40例】案例34:勾勒五官轮廓

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

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

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

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

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

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

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

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

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

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

通过人脸的关键点,可以勾勒出人脸的五官如图1所示。这里,我们针对人脸分别使用连接线条和绘制凸包轮廓处理。

【计算机视觉40例】案例34:勾勒五官轮廓_第1张图片

 

图1  运行结果

1 绘制连接线条

针对脸颊、眉毛、鼻子等五官,直接采用连接关键点方式,将关键点连接起来构成其大致轮廓。具体步骤如下:

步骤1获取当前五官所对应的关键点集。即获取当前五官的关键点从哪个索引开始,到哪个索引结束。例如,脸颊的关键点索引从0开始到16结束。

步骤2在关键点集合中索引相邻的两个关键点之间绘制直线,将相邻的关键点连接。例如,在构造脸颊轮廓时,分别将相邻的关键点使用直线连接,即可得到脸颊的轮廓。

根据上述思路,构造函数drawLine绘制五官对应的轮廓,具体如下:

def drawLine(start,end):

    pts = shape[start:end]    # 获取点集

    # 遍历点集,将各个点用直线连接起来

    for l in range(1, len(pts)):

        ptA = tuple(pts[l - 1])

        ptB = tuple(pts[l])

        cv2.line(image, ptA, ptB, (0, 255, 0), 2)

2 绘制凸包轮廓

针对眼睛、嘴等封闭区域构造凸包,并绘制其对应的轮廓。基本步骤如下:

步骤1获取某个特定五官所对应的关键点索引集。例如,左眼所对应的关键点集是索引从42到47的各个关键点所构成的。

步骤2根据关键点集,获取当前五官的凸包。

步骤3根据凸包,绘制当前五官的轮廓。

根据上述思路,构造函数drawConvexHull,具体如下:

def drawConvexHull(start,end):

    # 获取某个特定五官的点集

    Facial = shape[start:end]

    # 针对该五官构造凸包

    mouthHull = cv2.convexHull(Facial)

    # 把凸包轮廓绘制出来

    cv2.drawContours(image, [mouthHull], -1, (0, 255, 0), 2)

当然,眼睛、嘴也可以用通过直线绘制。但是,使用凸包绘制轮廓,更方便进行颜色填充等设置。

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

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

【计算机视觉40例】案例34:勾勒五官轮廓_第2张图片

 

你可能感兴趣的:(计算机视觉40例简介,计算机视觉,python,opencv,计算机视觉40例,计算机视觉案例)