您现在的位置是:首页» windows系统» python的opencv人脸识别教学,python opencv图像识别

python的opencv人脸识别教学,python opencv图像识别

2024-07-12 20:54:35
本内容由系统网小编为大家分享,Windows系统安装教程、办公系统、软件怎么使用、软件使用教程、办公软件攻略等信息。使用 dlib、 OpenCV 和 Python 测试面部标记 。今天,我们将使用 lib 和 OpenCV 来识别照片中的

本内容由系统网小编为大家分享,Windows系统安装教程、办公系统、软件怎么使用、软件使用教程、办公软件攻略等信息。

使用 dlib、 OpenCV 和 Python 测试面部标记 。

今天,我们将使用 lib 和 OpenCV 来识别照片中的面部标签。 dlib 安装指令 :

https://wanghao.blog.csdn.net/article/details/121470556

人脸检测器模型:

https://download.csdn.net/download/hhhhhhhhhhwwwwwwwwww/50939290

在脸部对齐、头部位置估计、面部交换、眨眼检查等领域,面部标记得到有效利用。

在今天的博客文章中, 我们将浏览面部标签的基本原理, 例如:

1. 什么是面孔标志,它们如何运作?

2. 利用dlib、OpenCV和Python学会如何识别和从图片中提取面部指标。

该员额的主要部分分为三部分:

1. 将检查面部标记,以及为什么在计算机视觉应用中使用面部标记。

2. 展示如何使用dlib、OpenCV和Python来识别和提取面部指标。

3. 我们将研究在照片上贴面贴标签的一些结果。

什么是面部标记?

人脸标记测试是形状预测问题的一个子集。 形状预测器收到一个输入图片( 典型的 ROI, 指定对象 ), 并试图在表格中找到重要关注领域 。

在人的脸标记框架内,我们的目标是利用形状预测算法,探测人脸上的基本人的脸结构。

因此,脸部标记是一个分两步走的过程:

第1步:在图像中摆放人的脸。

步骤2:在脸部ROI上,测试重要的面部结构。

进行面对面测试有几种方法(第1步)。

我们可以使用 OpenCV 内置的Haar级联。

预先训练的HOG+线性SVM物体探测器可以专门用于人的脸部测试任务。

对于人的脸部定位,我们甚至可以应用基于深层学习的算法。

在这两种情况下,在图像中识别人脸的技术都不重要。 相反,我们必须提取边界框架(即图像的坐标(x,y)),这一点至关重要。

第2步:测试面部区域重要的面部结构,可适用于供应的面部区域。

有几种面孔标记,但所有这些标记都力求找到和标出下列领域:

右眉

左眉

右眼

左眼

Dlib图书馆的面部标记探测器对Kazemi和Sullivan(2014年)开发的一系列回归树进行了毫秒的面部校准。

此方法首先使用:

图片上人工标记了一组训练的面部标记。 这些图像给出了每个面部部分周围区域的特定( X y) 坐标 。

更确切地说,前言是进入它们之间距离的像素的可能性。

提供了培训数据,并将培训数据还给树群收集,以便直接从像素强度(不`特征提取')估算面部标记位置。

最终产品是面部标记识别器,可以实时检测面部标记,并作出高质量的预测。

Dlib 脸标签检测器

dlib图书馆经过预先训练的面部标记探测器用来预测所绘制的面部结构68(x,y)坐标的位置。

下图显示68坐标指数:

这些注释是用于培训Dlib脸标记预报器的68点iBUG 300-W数据集的一部分。

存在各种形式的面孔标记,例如194点模型,可以就较大的数据集进行培训。

无论数据收集工作如何,都可使用同样的 " lib " 框架来培训输入培训数据的表格预报员,如果你想培训面孔标记或分辨形状预报员,则对输入培训数据非常方便。

我教你们如何在照片中 发现这些面部特征 在其余的这个职位上。

使用 dlib、 OpenCV 和 Python 测试面部标记 。

此员额用于 amutilsface_utitls 库。 它包含两个 Python 函数 。

第一个有用的函数 矩形_to_bb, 是“ 矩形到边框” 的缩写 :

此方法采用参数矩形, 代表由 dlib 探测器( 即面部识别系统) 创建的边界矩形 。

矩形物体具有可探测(x,y)坐标。

然而,在 OpenCV 中, 边界框通常被定义为“ (x,y, width, hileight) ”, 因此矩形_to_bb 方法为了方便起见将此矩形对象转换为四组坐标 。

第二个函数是“shape_to_np” :

dlib面部标记探测器提供一个形状物体,具有面部标记区域的68(x,y)坐标。

我们可以使用“shape_to_np”函数将该对象转换成 NumPy 数组 。

我们现在可以用这两个辅助功能来识别照片中的面部标记。

创建一个名为 面部 - landmarks. py 的新文件, 并粘贴以下代码 :

导入必需的 Python 软件包 。

上述实用功能将通过 amutils face_utils 子模块访问。

然后你就会进口Dlib。

看看我们的指挥线参数:

这是 dlib 预先训练的面部标记检测器。 您可以在此下载检测器模型, 或者使用此文章的“ 下载” 部分接收代码+example 图像+预训练的检测器 。

照片:我们将检查面部印记所输入的图像过程。

现在,我们已经处理 我们的进口和命令行选项, 让我们开始Dlib的面部检测器 和面部标记预报器:

根据对用于物体测试的定向梯度标准直方图和线性SVM算法的调整,初始化了Dlib人脸探测器培训前训练前测试。

然后使用形状路由来装载面标记预报器。

但是,在我们识别面部标记之前, 我们必须首先识别输入图像中的面部:

OpenCV将从磁盘上装入我们输入的图像, 并预处理它们, 将其重塑为500 像素的宽度, 并将其转换为灰度 。

检测图片的边框已被处理 。

探测器的第一个参数就是我们的灰度图片(但这个方法也可以用于彩色图像)。

第二个参数是用于在应用探测器之前放大图像的图像金字塔数(这与图像的 cv2 计算相对应)。 (N)

在进行人脸测试之前提高输入图像的分辨率的好处是,我们可以在图像中检测到更多的人脸——输入图像越大,测试程序的计算成本就越高。

我们现在可以使用图像中向人脸提供的坐标(x,y),在每个面部区域添加一个人脸标签:

循环每个人脸检测。

为每次面部测试提供68(x,y)坐标,以绘制图像中特定的人面部特征。

在此之后, dlib 形状对象将被转换成 NumPy 形状阵列( 68, 2) 。

绘制一个边框,围绕被识别的人在图像上的脸部绘制一个边框,并索引该人的脸部。

最后,它们通过观测到的面孔标记进行循环,并独立地绘制每个标记。

结果图片显示在屏幕上 。

测试结果

打开终端输入:

总结

在今天的博客文章中, 我们学习了面孔标记, 以及如何使用dlib、OpenCV和Python来识别这些标记。

探测照片的面部标记分为两个阶段:

首先,我们必须在图像中发现人的脸。 这可以通过多种方法实现,但最常见的是Haar级联或HOG+线性SVM探测器(但用任何方法在人脸周围建立边界框架都是合适的 ) 。

形状预测器,特别是面部标记探测器,应用来取得面部区域(x,y)坐标,在ROI面前。

我们可以使用各种计算机视觉方法,使用这些面部标记,包括:

面部部分切除(即鼻子、眼睛、嘴唇、下巴等)。

面部对齐

头部姿态估计

面交换

眨眼检测

……

我希望你觉得这个材料有用!

整个代码和文件信息如下:

https://download.csdn.net/download/hhhhhhhhhhwwwwwwwwww/50945619

XTw.com.Cn系统网专业应用软件下载教程,免费windows10系统,win11,办公软件,OA办公系统,OA软件,办公自动化软件,开源系统,移动办公软件等信息,解决一体化的办公方案。

免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!

联系邮箱:773537036@qq.com

标签: 面部 检测 标签