MediaPipe实时机器学习框架

news/2025/3/28 3:03:14/

📌 MediaPipe

MediaPipe 是 Google 推出的一个 实时机器学习框架,主要用于 手势识别、人体姿态追踪、人脸检测 等计算机视觉任务。

跨平台支持(可在 PC、Android、iOS 上运行)
轻量级(可在移动设备上实时运行)
无需深度学习背景(简单调用 API 就能实现复杂的 AI 视觉任务)


🚀 MediaPipe 能做什么?

📌 模块💡 作用🎯 应用场景
Hands手部关键点检测(21 关键点)手势识别、手语翻译、虚拟鼠标
Pose人体姿态估计(33 关键点)健身动作分析、舞蹈训练、AR 滤镜
Face Detection人脸检测解锁屏幕、面部表情分析
Face Mesh3D 面部关键点(468 关键点)虚拟化妆、表情动画、3D 滤镜
Holistic综合人体检测(脸、手、姿势)虚拟主播、AI 健身教练
Objectron3D 物体检测识别 3D 物品,如鞋子、家具
Selfie Segmentation背景分割视频会议背景虚化
Hair Segmentation头发分割头发颜色替换、美颜应用

🛠 安装 MediaPipe

pip install mediapipe opencv-python

🔥 1️⃣ MediaPipe 手部识别(Hands)

📌 识别手势、手语、虚拟鼠标

import cv2
import mediapipe as mp# 初始化 MediaPipe Hands
mp_hands = mp.solutions.hands
hands = mp_hands.Hands()
mp_draw = mp.solutions.drawing_utils# 打开摄像头
cap = cv2.VideoCapture(0)while cap.isOpened():ret, frame = cap.read()if not ret:break# 转换颜色 (BGR → RGB)rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)# 处理手部result = hands.process(rgb_frame)if result.multi_hand_landmarks:for hand_landmarks in result.multi_hand_landmarks:mp_draw.draw_landmarks(frame, hand_landmarks, mp_hands.HAND_CONNECTIONS)cv2.imshow("Hand Tracking", frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()

功能:检测手部并绘制 21 个关键点
应用:手势控制、虚拟键盘、手语识别


🔥 2️⃣ MediaPipe 人体姿态估计(Pose)

📌 识别人体关键点(33 个),分析健身、瑜伽、舞蹈动作

import cv2
import mediapipe as mp# 初始化 Pose 模块
mp_pose = mp.solutions.pose
pose = mp_pose.Pose()
mp_draw = mp.solutions.drawing_utilscap = cv2.VideoCapture(0)while cap.isOpened():ret, frame = cap.read()if not ret:breakrgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)result = pose.process(rgb_frame)if result.pose_landmarks:mp_draw.draw_landmarks(frame, result.pose_landmarks, mp_pose.POSE_CONNECTIONS)cv2.imshow("Pose Estimation", frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()

功能:检测人体 33 个关键点
应用:瑜伽姿势纠正、健身训练、AI 体感游戏


🔥 3️⃣ MediaPipe 3D 人脸检测(Face Mesh)

📌 检测 468 个面部关键点,生成 3D 面部模型

import cv2
import mediapipe as mp# 初始化 Face Mesh
mp_face_mesh = mp.solutions.face_mesh
face_mesh = mp_face_mesh.FaceMesh()
mp_draw = mp.solutions.drawing_utilscap = cv2.VideoCapture(0)while cap.isOpened():ret, frame = cap.read()if not ret:breakrgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)result = face_mesh.process(rgb_frame)if result.multi_face_landmarks:for face_landmarks in result.multi_face_landmarks:mp_draw.draw_landmarks(frame, face_landmarks, mp_face_mesh.FACEMESH_TESSELATION)cv2.imshow("Face Mesh", frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()

功能:检测 468 个 3D 关键点
应用:虚拟化妆、AR 滤镜、3D 表情动画


🔥 4️⃣ MediaPipe 背景分割(Selfie Segmentation)

📌 将人物和背景分开,实现背景虚化、替换背景

import cv2
import mediapipe as mp
import numpy as npmp_selfie_segmentation = mp.solutions.selfie_segmentation
segmentation = mp_selfie_segmentation.SelfieSegmentation()cap = cv2.VideoCapture(0)while cap.isOpened():ret, frame = cap.read()if not ret:breakrgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)result = segmentation.process(rgb_frame)mask = result.segmentation_maskmask = np.where(mask > 0.5, 255, 0).astype(np.uint8)  # 生成二值化掩码# 替换背景为纯白色bg = np.ones_like(frame, np.uint8) * 255output = np.where(mask[..., None], frame, bg)cv2.imshow("Background Removal", output)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()

功能:分割人物和背景,替换背景
应用:视频会议背景虚化、AI 抠图、抖音绿幕特效


🌟 MediaPipe VS OpenCV

MediaPipeOpenCV
目标机器学习模型(人体、手势、面部)传统计算机视觉(边缘检测、滤波)
开发难度易上手(提供预训练模型)需要编写更多代码
性能适合移动端和实时处理适合低级图像处理
应用场景AI 识别、手势交互目标检测、OCR 识别

✅ 总结

  1. MediaPipe 是 Google 开源的 AI 视觉库,支持 手势、人脸、姿态、背景分割等
  2. 安装简单,API 友好,适合实时检测,可用于 Python、Android、iOS
  3. 广泛应用手势交互、虚拟主播、健身 AI、AR 滤镜 等领域。


http://www.ppmy.cn/news/1582951.html

相关文章

Enhancing Zero-shot Text-to-Speech Synthesis with Human Feedback论文学习

借助人类反馈增强零样本文本到语音合成 Abstract In recent years, text-to-speech (TTS) technology has witnessed impressive advancements, particularly with large-scale training datasets, showcasing human-level speech quality and impressive zero-shot capabilit…

【Redis】Redis 持久化机制全面解析

文章目录 一、RDB 持久化​1.1 RDB 原理​1.2 RDB 配置​1.3 RDB 的优缺点​ 二、AOF 持久化​2.1 AOF 原理​2.2 AOF 配置​2.3 AOF 的优缺点​ 三、RDB 和 AOF 的选择​四、总结​ 在当今的互联网应用开发中,Redis 作为一款高性能的内存数据库,被广泛应…

Python----计算机视觉处理(Opencv:凸包特征检测:凸包方法)

一、凸包 通俗的说,就是完全凸起,没有凹处的多边形,也叫做凸多边形。一 般来说凸包都是伴随着某类点集存在的,也被称为某个点集的凸包。 对于一个点集来说,如果该点集存在凸包,那么这个点集中的所有的点要么…

SpringBoot实战(三十二)集成 ofdrw,实现 PDF 和 OFD 的转换、SM2 签署OFD

目录 一、OFD 简介 1.1 什么是 OFD?1.2 什么是 版式文档?1.3 为什么要用 OFD 而不是PDF? 二、ofdrw 简介 2.1 定义2.2 Maven 依赖2.3 ofdrw 的 13 个模块 三、PDF/文本/图片 转 OFD(ofdrw-conterver) 3.1 介绍&#xf…

【蓝桥杯每日一题】3.20

🏝️专栏: 【蓝桥杯备篇】 🌅主页: f狐o狸x “蓝桥杯是编程成人礼——那些崩溃的深夜,终将变成你碾压题海的底气” 今天我们来点有意思的算法:前缀和 前缀和与差分的核⼼思想是预处理,可以在暴…

Spec2MP:项目管理之项目质量管理

芯片项目质量管理:从规划到交付的“硬核”生存指南 在芯片设计领域,一个微小的代码错误可能导致数千万的流片损失,一次验证疏漏可能让产品错失市场窗口期。面对动辄数百人年的研发投入,芯片项目的质量管理不仅是技术问题&#xff…

Zotero·Awesome GPT配置

使用API配置(稳定,氪金) 配置1-1 (方式1)在DeepSeek 开放平台获得API Key,输入Awesome GPT的api key中;base api选项选择deepseek;Temperature设置1,Related Number设置…

TCP netstat TIME_WAIT CLOSE_WAIT

TIME_WAIT is different from CLOSE_WAIT, and it’s not necessarily a client-side fault. It happens due to how TCP handles connection termination. Key Differences TCP StateCauseWho is responsible?Fix/OptimizationCLOSE_WAITServer didn’t close() the socket…