news 2026/9/3 19:39:55

MediaPipe Hands:如何从摄像头实时追踪 21 个手部关键点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MediaPipe Hands:如何从摄像头实时追踪 21 个手部关键点

MediaPipe Hands:如何从摄像头实时追踪 21 个手部关键点

【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe

打开笔记本摄像头,屏幕上你的手背上立刻亮起 21 个带连线的点——手腕 1 个,每根手指 4 个,指尖、指节一个不少。这就是 MediaPipe Hands 在本地做的事:逐帧分析摄像头画面,输出每只手的 21 个 3D 关键点坐标。它不需要 GPU 服务器,Python 装个包就能跑,Android、iOS、桌面端都有现成示例工程。

先看效果

下图来自仓库内手势识别数据集,MediaPipe Hands 会在这样的画面上输出双手的 21 个关键点,z 值表示深度,可以区分前后手指。

几个关键数据:

  • 每只手 21 个关键点,输出含 x、y、z 三维坐标(x、y 归一化到 [0,1],z 以手腕为原点)
  • 掌部检测平均精度 95.7%,默认最多同时跟踪 2 只手
  • 检测置信度默认 0.5;移动端 GPU 上可实时运行

3 分钟跑通手势识别

先用 pip 装好包,然后十几行 Python 就能让摄像头里的关键点动起来。

安装依赖:

pip install mediapipe opencv-python

打开摄像头并绘制手部关键点:

import cv2, mediapipe as mp hands = mp.solutions.hands.Hands(max_num_hands=2, min_detection_confidence=0.5) cap = cv2.VideoCapture(0) while cap.isOpened(): ok, img = cap.read() if not ok: break r = hands.process(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) if r.multi_hand_landmarks: mp.solutions.drawing_utils.draw_landmarks(img, r.multi_hand_landmarks, mp.solutions.hands.HAND_CONNECTIONS) cv2.imshow('MediaPipe Hands', cv2.flip(img, 1)) if cv2.waitKey(5) & 0xFF == 27: break

完整工程(Android、iOS、桌面 C++ 三端)可直接看仓库里的示例目录 mediapipe/examples/desktop/hand_tracking/。

它是怎么工作的

关键点在单帧图像上就能算出来,整条管线是两级结构:

  • 掌部检测:一个 SSD 单发检测器先在全图上找手掌框。官方论文里说,检测"刚性的手掌"比检测张开手指的手要稳得多,双手握手这种自遮挡场景也压得住
  • 关键点回归:在手部裁剪区上,另一个模型直接回归出 21 个 3D 坐标;训练用了约 3 万张人工标注图加合成手部渲染图
  • 跟踪复用:视频模式下,后一帧优先用上一帧关键点位置裁剪局部区域继续跟踪,跟丢了才重新跑掌部检测——这是延迟低的关键
  • 图化管线:整条流程由 pbtxt 图文件定义,见 mediapipe/graphs/hand_tracking/hand_tracking_mobile.pbtxt,Android/iOS 上可切到 GPU 执行

能拿它做什么

手势识别:把 21 个点的相对位置喂给分类器,就能把画面判成"石头/剪刀/布/数字 4"这类离散手势。

隔空操作:指尖坐标可以直接驱动光标或虚拟键盘按键,手指弯曲程度(用关节角度算)对应按键区。

手语转文字:连续帧的 21 点序列 + 手部朝向,是手语识别系统最基础的输入特征。

自定义手势模型:自带手势不够用?用 Model Maker 录几组照片就能微调出自己的识别器,样本目录 mediapipe/model_maker/python/vision/gesture_recognizer/ 自带完整数据集和教程。

进阶玩法:参数与图文件在哪改

常用调参项(Python 里就是Hands()的入参):

  • max_num_hands:跟几只手,默认 2
  • model_complexity:0 或 1,越高越准也越慢
  • min_detection_confidence/min_tracking_confidence:丢手时机,调高更稳、丢得更快
  • static_image_mode:处理静态图设true,每帧都跑检测

底层管线想动结构,改图文件:移动端 hand_tracking_mobile.pbtxt、桌面端hand_tracking_desktop_live.pbtxt都在 mediapipe/graphs/hand_tracking/ 目录;关键点模型子图在 mediapipe/modules/hand_landmark/。

写在最后

如果你要的是"摄像头进、21 个 3D 点出"、数据全在本地、还要覆盖 Android/iOS/桌面三端,MediaPipe Hands 目前几乎没有更省事的选择。两种情况可以不用它:只是想在 iPhone 上取手部位图,系统自带框架就够了;要的是全身关节,直接看同仓库的 Pose 或 Holistic 方案更合适。

【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 12:57:15

电路板手持喷码机高识别率实现:从原理到实践的全流程指南

在电子制造、PCB(印刷电路板)生产、SMT(表面贴装技术)以及产品追溯等场景中,直接在电路板(线路板)上喷印清晰、可读、可识别的标识,如序列号、批次号、二维码、条形码等,…

作者头像 李华
网站建设 2026/9/2 12:56:25

go-zero 微服务里,聚合根到底该怎么落地?

go-zero 微服务里,聚合根到底该怎么落地? 【免费下载链接】go-zero A cloud-native Go microservices framework with cli tool for productivity. 项目地址: https://gitcode.com/GitHub_Trending/go/go-zero 半夜被叫起来查线上问题&#xff1a…

作者头像 李华
网站建设 2026/9/3 16:13:31

10分钟用Rufus制作Windows启动盘:分区方案与关键参数指南

10分钟用Rufus制作Windows启动盘:分区方案与关键参数指南 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus 新电脑没有安装盘,需要装系统,你手边只有一个U盘&…

作者头像 李华
网站建设 2026/9/2 12:54:22

【从0带做】基于Springboot3+Vue3的疾病防控综合系统

该项目资料获取请点击上方⬆️卡片,然后进入【项目实战库】板块即可搜索到。 项目演示视频和教程视频 https://www.bilibili.com/video/BV1APyQYMEfQ 项目在线体验地址 体验地址:(请电脑端浏览器访问):http://49.2…

作者头像 李华
网站建设 2026/9/3 19:29:16

autobind-decorator开源项目教程

autobind-decorator开源项目教程 【免费下载链接】autobind-decorator Decorator to automatically bind methods to class instances 项目地址: https://gitcode.com/gh_mirrors/au/autobind-decorator 一、项目目录结构及介绍 autobind-decorator/ ├── example/ …

作者头像 李华
网站建设 2026/9/3 15:33:06

CesiumJS动态热力图实现:基于相机高度实时刷新与性能优化

简介:本资源是一套基于Cesium与Vue.js实现的动态热力图实战项目,面向GIS开发工程师、Web三维可视化开发者及前端进阶学习者,解决在3D地球场景中热力图随视角变化(尤其是相机高度)实时自适应渲染的技术难点。压缩包共11…

作者头像 李华