千家信息网

怎么用Python+MediaPipe实现检测人脸功能

发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章主要介绍"怎么用Python+MediaPipe实现检测人脸功能",在日常操作中,相信很多人在怎么用Python+MediaPipe实现检测人脸功能问题上存在疑惑,小编查阅了各式资料,整理出简
千家信息网最后更新 2025年11月14日怎么用Python+MediaPipe实现检测人脸功能

这篇文章主要介绍"怎么用Python+MediaPipe实现检测人脸功能",在日常操作中,相信很多人在怎么用Python+MediaPipe实现检测人脸功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么用Python+MediaPipe实现检测人脸功能"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

MediaPipe概述

谷歌开源MediaPipe于2019年6月首次推出。它的目标是通过提供一些集成的计算机视觉和机器学习功能,使我们的生活变得轻松。

MediaPipe是用于构建多模态(例如视频、音频或任何时间序列数据)、跨平台(即eAndroid、IOS、web、边缘设备)应用ML管道的框架。

Mediapipe还促进了机器学习技术在各种不同硬件平台上的演示和应用程序中的部署。

应用

  • 人脸检测

  • 多手跟踪

  • 头发分割

  • 目标检测与跟踪

  • 目标:三维目标检测与跟踪

  • AutoFlip:视频裁剪管道

  • 其他

为什么需要MediaPipe

有效管理资源(CPU和GPU)以实现低延迟性能,处理时间序列数据(如音频和视频帧)的同步。

MediaPipe将每个感知模型抽象为一个模块,并将它们与维护图连接起来。

除上述功能外,MediaPipe还支持TensorFlow和TF Lite推理引擎。任何TensorFlow和TF Lite模型均可用于MediaPipe。同时,在移动和嵌入式平台上,MediaPipe还支持设备本身的GPU加速。

现在是时候向MediaPipe的应用迈进了,人脸检测。

人脸检测

考虑一个场景,"零售商要求你计算访客数量,并跟踪访客的移动。"

看起来很难!!我们怎样才能解决这个问题?嗯…

哦,是的!我们将使用人脸检测来解决这个问题。

人脸检测是计算机视觉中的一个问题,即在照片中定位和定位一个或多个人脸。

问题的一般陈述可以定义如下:给定一幅静止或视频图像,检测并定位未知数量(如果有)的人脸。

使用MediaPipe执行人脸检测:

要执行人脸检测,可以使用三种模型:

  • 近景模型(最适合距离相机2米以内的人脸)

  • 全范围模型(密集型,最适合距离相机5米以内的人脸)

  • 全范围模型(稀疏,最适合距离相机5米以内的人脸)

全范围密集模型和稀疏模型在F分数方面具有相同的质量,但在基础度量方面有所不同。

密集型模型的召回率略高于稀疏模型,而稀疏模型的精确度高于稠密模型。

现在是时候使用MediaPipe的人脸检测模型了。

安装必要的库

要执行人脸检测,首先必须在机器中安装MediaPipe。如果你是windows用户,则可以在计算机的命令提示符下运行以下代码。

pip install mediapipe

有关详细说明,你可以访问以下链接:

https://google.github.io/mediapipe/getting_started/python.html

你还需要为网络摄像头或图像输入安装OpenCV。如果你是windows用户,可以在命令提示符下运行以下代码。

pip install opencv-python

有关详细说明,你可以访问以下链接:

https://pypi.org/project/opencv-python/

编写代码以了解API的使用:

我们使用Google Colab来运行代码。你可以选择使用它。

我们需要cv2,能够读取和显示图像,以及MediaPipe模块,它公开了我们执行人脸检测所需的功能

import cv2import mediapipe as mp

然后我们将访问两个子模块face_detection和drawing_utils。人脸检测用于加载所有功能以执行人脸检测,而绘图工具用于在图像上绘制检测到的人脸。

mp_face_detection = mp.solutions.face_detectionmp_drawing = mp.solutions.drawing_utils

是时候深入研究代码了。首先,我们将图像作为输入。这里我们使用两种类型的图像

(i) 包含2米以内的人脸的图像

(ii)包含5米以内的人脸的图像。

我们使用colab中的文件直接从本地目录加载图像。你也可以使用cv2.imread用于在本地计算机中工作时加载图像。

(a) 第一张照片

from google.colab import files uploaded_short_range = files.upload()

(b) 第二张照片

from google.colab import files uploaded_full_range = files.upload()

在本地PC上工作时,你可以使用

cv2.imread() # 获取输入

单击此处了解有关cv2.imread:

现在我们将调整图像大小并显示图像。为了显示图像,我们必须使用colab或cv2的cv2_imshow模块。

在本地机器中工作时显示cv2.imshow(frame name, iamge)。我们可以使用下面的代码在google colab中调整图像大小并显示图像。

用于调整图像大小和显示图像的代码:

import cv2from google.colab.patches import cv2_imshowimport mathimport numpy as np DESIRED_HEIGHT = 480DESIRED_WIDTH = 480def resize_and_show(image):  h, w = image.shape[:2]  if h < w:    img = cv2.resize(image, (DESIRED_WIDTH, math.floor(h/(w/DESIRED_WIDTH))))  else:    img = cv2.resize(image, (math.floor(w/(h/DESIRED_HEIGHT)), DESIRED_HEIGHT))  cv2_imshow(img) # 预览图片. short_range_images = {name: cv2.imread(name) for name in uploaded_short_range.keys()}for name, image in short_range_images.items():  print(name)     resize_and_show(image)  full_range_images = {name: cv2.imread(name) for name in uploaded_full_range.keys()}for name, image in full_range_images.items():  print(name)      resize_and_show(image)

上述代码的输出示例

现在,我们将在脸上画关键点。

我们可以如下更改thickness和circle_radius的值。

drawing_spec = mp_drawing.DrawingSpec(thickness=1, circle_radius=1)

以下代码了解mp.solutions.face_detection的详细信息。

help(mp_face_detection.FaceDetection)

在此之后,我们将创建一个FaceDetection类的对象。该对象将允许我们处理图像并执行人脸关键点检测。此类的构造函数支持以下参数:

(i) 模型选择:整数索引0或1。使用0选择最适合距离摄影机2米以内的面的短距离模型,使用1选择最适合距离摄影机5米以内的面的全范围模型。对于全范围选项,稀疏模型用于提高推理速度。

(ii)最小检测置信度:人脸检测模型中的最小置信值([0.0,1.0]),检测成功。默认值为0.5。

with mp_face_detection.FaceDetection(min_detection_confidence=0.5, model_selection=0) as face_detection:

上面的代码model_selection=0,这意味着我们选择短距离模型进行人脸检测。使用下面的代码,我们使用一个简短的图像模型执行最终的人脸检测,并绘制关键点。

# 运行MediaPipe人脸检测与近距离模型 with mp_face_detection.FaceDetection(        min_detection_confidence=0.5, model_selection=0) as face_detection:          for name, image in short_range_images.items():    # 将BGR图像转换为RGB,并使用MediaPipe人脸检测进行处理。     results = face_detection.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))     # 绘制每个人脸的检测。    print(f'Face detections of {name}:')        if not results.detections:              continue    annotated_image = image.copy()    for detection in results.detections:       mp_drawing.draw_detection(annotated_image, detection)     resize_and_show(annotated_image)

短长度(2米以内)图像的人脸检测模型

现在对于model_selection=1,这意味着我们选择人脸检测全范围模型。使用下面的代码,我们使用完整的图像模型执行最终的人脸检测,并绘制关键点。

with mp_face_detection.FaceDetection(     min_detection_confidence=0.5, model_selection=1) as face_detection:   for name, image in full_range_images.items():    # 将BGR图像转换为RGB,并使用MediaPipe人脸检测进行处理。    results = face_detection.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))    # 绘制每个人脸的检测。    print(f'Face detections of {name}:')     if not results.detections:       continue     annotated_image = image.copy()     for detection in results.detections:       mp_drawing.draw_detection(annotated_image, detection)     resize_and_show(annotated_image)

全范围(5米以内)图像的人脸检测模型

我们还可以使用全范围人脸检测模型的代码对集体照片执行此过程。

到此,关于"怎么用Python+MediaPipe实现检测人脸功能"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

人脸 检测 模型 图像 代码 功能 范围 面的 学习 选择 稀疏 问题 关键 关键点 机器 模块 照片 目标 视频 计算机 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 如何申请企业软件开发资质 ipad邮件发件服务器怎么设置 招聘的网络技术 华为软件开发信息安全 数据库中循环的应用 锡林浩特正规app软件开发培训 怎么随机从数据库取数据 qt 数据库 建表 中文 海拔科技软件开发 乌班图服务器系统如何装显卡 app定制软件开发服务报价 河北服务器工控机箱定制云主机 服务器安全日志特殊登录 物理计算软件开发有前途吗 软件开发教程第十三讲 榆林软件开发销售公司 数据库自动建立 津南区数据网络技术售后服务 开发与运维好还是网络安全好 腾讯云服务器账号怎么查 阿尔法标签软件数据库怎么选 产业活动单位数据库 定制类软件开发 商店服务器推荐我的世界 成都游戏软件开发公司地址 丰县公共基础数据库平台 华为云软件开发平台一直扣费 大数据库是个什么意思 丽水工业软件开发费用 走网络安全方面哪些知识要学
0