千家信息网

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

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍"怎么用Python+MediaPipe实现检测人脸功能",在日常操作中,相信很多人在怎么用Python+MediaPipe实现检测人脸功能问题上存在疑惑,小编查阅了各式资料,整理出简
千家信息网最后更新 2026年11月04日怎么用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安全错误 数据库的锁怎样保障安全 咖啡豆 花魁咖啡 互联网科技企业 小米移动互联网科技园 广东万易互联网科技有限公司惠州分公司 互联网科技保险 互联网科技财经 互联网巨头反垄断金融科技 深圳互联网科技公司 金融科技与互联网金融 壹账通互联网科技 中国互联网金融科技基金 科技赋能互联网健康 西藏七维空间互联网科技有限公司 广州慧亚互联网科技怎么样 互联网科技革命什么开始 新兴科技互联网创新大赛颁奖典礼 黑科技 体验场景 互联网大会 皮皮虾互联网科技有限公司 宁波跨境商互联网科技有限公司 百单网互联网科技有限公司 迪茉互联网科技 北京互联网络科技有限公司 善班互联网科技有限公司 互联网科技素材视频竖屏 南平创想时代互联网科技有限公司 江阴互联网智能科技产品进口 允成互联网科技有限公司融资 每天都有哪些好的互联网科技 平安好医生打造互联网科技医疗
0