计算机视觉40例案例32:定位人脸(代码片段)

superdont superdont     2022-12-07     295

关键词:

导读】本文是专栏《计算机视觉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: 李立宗  lilizong@gmail.com
微信公众号:计算机视觉之光(微信号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个典型案例。这些案例中,既有传统的案例(数字识别、答题卡识别、物体计数、缺陷检测、手势识别、隐身术、以图搜图、车牌识别、图像加密、指纹识别等),也有深度学习案例(图像分类、风格迁移、姿势识别、实例分割等),还有人脸识别方面的案例(表情识别、驾驶员疲劳监测、识别性别与年龄等)。

 

图像处理——基于机器视觉技术的人脸在线识别系统设计(代码片段)

...套人脸在线检测识别系统,系统将由以下几个部分构成:计算机图像预处理、数据收集和预处理、人脸图像定位检测、人脸识别模型训练、人脸识别。经过实验,确定该系统可对本人的人脸进行快速并准确的检测与识别。关键词... 查看详情

python计算机视觉:视频人脸马赛克(代码片段)

...opencv将视频转换成图片读者可以去看看小编的这篇文章:计算机视觉:视频分解图片和图片合成视频,那么怎样用opencv播放视频呢?(没有声音的视频哈!),其实就是利用opencv将视频转换成一张张的图片进行展示,每张图片展示... 查看详情

计算机视觉项目-人脸识别与检测(代码片段)

...OpenCV的相关知识🎉作者简介:⭐️⭐️⭐️目前计算机研究生在读。主要研究方向是人工智能和群智能算法方向。目前熟悉深度学习(keras、pytorch、yolo系列),pytho 查看详情

python计算机视觉:视频人脸马赛克(代码片段)

...opencv将视频转换成图片读者可以去看看小编的这篇文章:计算机视觉:视频分解图片和图片合成视频,那么怎样用opencv播放视频呢?(没有声音的视频哈!),其实就是利用opencv将视频转换成一张张的图片进行展示,每张图片展示... 查看详情

计算机视觉opencv学习系列:第十部分实时人脸检测(代码片段)

第十部分、实时人脸检测第一节、实时人脸检测1.OpenCV人脸检测支持演化2.OpenCVDNN检测函数3.代码练习与测试学习参考第一节、实时人脸检测1.OpenCV人脸检测支持演化OpenCV4DNN模块DNN-深度神经网络来自另外一个开源项目tinydnnOpenCV3.3... 查看详情

计算机视觉案例:应用opencv+keras完成视频物体检测(代码片段)

案例:视频物体检测测试1.案例结构目录2.案例效果演示3.步骤分析4.代码实现5.调用视频预测6.完整代码1.案例结构目录2.案例效果演示3.步骤分析配置获取相关预测数据类别,网络参数获取摄像头视频获取摄像每帧数据ÿ... 查看详情

计算机视觉·opencv使用haar+cascade实现人脸检测(代码片段)

前言人脸检测的目标是找出图像中所有的人脸对应的位置,算法的输出是人脸的外接矩形在图像中的坐标。使用haar特征和cascade检测器进行人脸检测是一种传统的方式,下面将给出利用OpenCV中的haarcascade进行人脸检测的代... 查看详情

[计算机视觉]人脸应用:人脸检测人脸对比五官检测眨眼检测活体检测疲劳检测

人脸应用在计算机视觉体系中占很大一块,在深度学习火起来之前,基于传统机器学习的人脸应用就已经很成熟了,有很多商用应用场景。本文用一个可以实际运行的Demo来说明人脸应用中常见的技术概念,包含‘... 查看详情

毕业设计stm32机器视觉的人脸识别系统-单片机物联网嵌入式(代码片段)

文章目录0前言1简介2主要器件3实现效果4设计原理K210实现人脸识别5部分核心代码6最后0前言🔥这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求ÿ... 查看详情

基于百度飞浆平台(easydl)设计的人脸识别考勤系统(代码片段)

...验票机、商业店铺刷脸缴费机、宿舍刷脸门禁系统等。1.2计算机视觉人脸识别技术就是属于计算机视觉的一个具体应用,计算机视觉具体的说,就是让机器去识别摄像机拍摄的图片或视频中的物体,检测出物体所在的... 查看详情

python笔记-opencv图像处理和人脸识别(代码片段)

...称是OpenSourceComputerVisionLibrary,是一个开源的跨平台的计算机视觉库。可以运行在Linux、Windows、Android和macOS操作系统上,帮助人们快速构建复杂的视觉应用程序。2.计算机视觉:计算机视觉(ComputerVision)就是利... 查看详情

[译]人脸检测与人脸识别简介(代码片段)

...mami.co.cc/faceRecognition.htmlTranslatedby11“人脸识别”是一个在计算机视觉和生物特征识别领域十分活跃的话题。这个主题已经被给力地研究了25年,并且最终在安全、机器人学、人机交互、数码摄像机、游戏和娱乐领域得到了广... 查看详情

python计算机视觉(十六)——图像和视频中的人脸识别(代码片段)

参考的一些文章以及论文我都会给大家分享出来——链接就贴在原文,论文我上传到资源中去,大家可以免费下载学习,如果当天资源区找不到论文,那就等等,可能正在审核,审核完后就可以下载了。大... 查看详情

opencv实战项目--人脸考勤(代码片段)

人脸任务在计算机视觉领域中十分重要,本项目主要使用了两类技术:人脸检测+人脸识别。代码分为两部分内容:人脸注册和人脸识别人脸注册:将人脸特征存储进数据库,这里用feature.csv代替人脸识别... 查看详情

c40pl适配车牌识别应用(代码片段)

FireflyC40PL开源AI智能摄像机搭载了高性能AI视觉处理器RV1126,强悍的VPU视频编解码、NPU推理和 ISP视频处理能力让C40PL比普通的网络摄像头枪机拥有更广阔的应用场景,如:车牌识别、人脸识别、People count等等。   本... 查看详情

案例3,absolute:绝对定位(代码片段)

Absolute:绝对定位结合 Relative:相对定位实现“限时抢“特效 知识点:有些样式必须结合父容器是相对定位Relative,且样式容器是绝对定位Absolute来实现 父容器虽然相对定位Relative了,但是没有设置偏移值。只是为了实... 查看详情

人脸检测5种方法(代码片段)

众所周知,人脸识别是计算机视觉应用的一个重大领域,在学习人脸识别之前,我们先来简单学习下人脸检测的几种用法。常见的人脸检测方法大致有5种,Haar、Hog、CNN、SSD、MTCNN:注:本文章图片来源于... 查看详情

深度学习和计算机视觉(cv)介绍(代码片段)

目录1深度学习概述1.1什么是深度学习1.2发展历史2计算机视觉(CV)2.1计算机视觉定义2.2常见任务2.3应用场景2.3.1人脸识别2.3.2视频监控2.3.3图片识别分析2.3.4辅助驾驶2.4发展历史1深度学习概述1.1什么是深度学习在介绍深度... 查看详情