MediaPipe 手部追踪迁移:Hand Landmarker 完整落地指南

发布时间:2026/9/2 12:35:46

MediaPipe 手部追踪迁移:Hand Landmarker 完整落地指南
MediaPipe 手部追踪迁移Hand Landmarker 完整落地指南【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipeMediaPipe 手部追踪迁移是给还在用旧版Hands方案的开发者准备的2023 年 3 月MediaPipe 把 Hands 改名为 Hand Landmarker 并搬进 Tasks 架构旧接口不再演进。本文按改哪几处讲清升级路径并给出双平台能跑的代码。先判断要不要迁不迁会失去什么旧版mp.solutions.hands.Hands目前依然可用但它的功能上限已经封顶没有实时流模式拿不到分级的置信度控制也选不了高精度或轻量模型。Hand Landmarker 是mediapipe.tasks下的独立任务模块模型需要自己提供子图如何拆分可以看 模块目录。如果你的业务涉及摄像头实时流、或要按设备档位切换模型迁移基本是必选项如果只是离线跑静态图且代码稳定可以先不急着动。一张表看懂新旧 API 的 4 个改动位置要动手的位置旧 Hands API新 Hand Landmarkerimportmp.solutions.hands核心类Handsmediapipe.tasks.python.vision核心类HandLandmarker模型加载模型随 wheel 内置无需配置BaseOptions里显式传 .tflite 路径参数传递构造函数直接给static_image_mode、max_num_hands等填一个HandLandmarkerOptions对象再建实例结果处理process()同步返回配drawing_utils绘制IMAGE/VIDEO 同步返回HandLandmarkerResultLIVE_STREAM 走result_callback模型文件共两个hand_landmark_full.tflite高精度与hand_landmark_lite.tflite轻量构建清单见 BUILD 文件。最小改动迁移路径4 个动作一次改完升级依赖先锁定 MediaPipe ≥0.9.0Tasks 的 Python 接口从 0.9.0 开始提供先升级再动手pip install mediapipe --upgrade模型文件放哪显式指定 full 还是 lite新 API 不再内置模型需要自行下载对应 .tflite 放进工程目录。初始化前先断言路径别等运行时才报模型文件不存在import os model_path hand_landmark_full.tflite # 移动端建议换 hand_landmark_lite.tflite assert os.path.exists(model_path), f模型文件不存在: {model_path}换掉 Hands 的初始化换成 HandLandmarker下面这组是全文唯一一处完整的新旧对照注释里写了每处为什么改# 旧写法Hands import cv2 import mediapipe as mp hands mp.solutions.hands.Hands( # 旧类参数直接塞构造函数 static_image_modeFalse, max_num_hands2, min_detection_confidence0.5) results hands.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))# 新写法Hand Landmarker import mediapipe as mp from mediapipe.tasks import python from mediapipe.tasks.python import vision # 新 API 统一在 tasks.vision 下 base_options python.BaseOptions( model_asset_pathhand_landmark_full.tflite) # 为什么新 API 不带内置模型 options vision.HandLandmarkerOptions( base_optionsbase_options, running_modevision.RunningMode.VIDEO, # 为什么替代 static_image_mode num_hands2, min_hand_detection_confidence0.5) with vision.HandLandmarker.create_from_options(options) as landmarker: mp_image mp.Image(image_formatmp.ImageFormat.SRGB, datargb_image) results landmarker.detect_for_video( mp_image, timestamp_msts_ms) # 为什么视频模式必须带毫秒时间戳参数、方法的完整定义在 Python 实现里可以核对。参数逐个翻译阈值怎么对应static_image_mode→running_mode从布尔扩成 IMAGE / VIDEO / LIVE_STREAM 三选一。max_num_hands→num_hands含义不变。min_detection_confidence→min_hand_detection_confidence手部检测器置信度。min_tracking_confidence名字不变继续管跟踪稳定性。新增min_hand_presence_confidence手部存在阈值与上面两项配合控制稳定性。想一步把稳定性拉上来可以这样写options vision.HandLandmarkerOptions( base_optionsbase_options, min_hand_detection_confidence0.7, # 对应旧的 min_detection_confidence min_hand_presence_confidence0.7, # 新增手部存在阈值 min_tracking_confidence0.7) # 跟踪稳定性双平台落地Python 实时摄像头示例实时场景用 LIVE_STREAM 模式detect_async提交帧结果从result_callback回来。下面这段可直接运行import cv2 import mediapipe as mp from mediapipe.tasks import python from mediapipe.tasks.python import vision MODEL hand_landmark_full.tflite def on_result(result: vision.HandLandmarkerResult, image: mp.Image, timestamp_ms: int) - None: print(f{timestamp_ms} ms: 检测到 {len(result.hand_landmarks)} 只手) options vision.HandLandmarkerOptions( base_optionspython.BaseOptions(model_asset_pathMODEL), running_modevision.RunningMode.LIVE_STREAM, # 实时流必须用此模式 num_hands2, min_hand_detection_confidence0.5, result_callbackon_result) # LIVE_STREAM 模式必须给回调 landmarker vision.HandLandmarker.create_from_options(options) cap cv2.VideoCapture(0) t0 cv2.getTickCount() / cv2.getTickFrequency() while cap.isOpened(): ok, frame cap.read() if not ok: break rgb cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) now_ms int((cv2.getTickCount() / cv2.getTickFrequency() - t0) * 1000) # 时间戳用真实流逝的毫秒数不能只自增 1 landmarker.detect_async( mp.Image(image_formatmp.ImageFormat.SRGB, datargb), now_ms) cv2.imshow(Hand Landmarker, cv2.flip(frame, 1)) if cv2.waitKey(5) 0xFF 27: break cap.release() cv2.destroyAllWindows()Android 侧记住三件事命名空间变化新类在com.google.mediapipe.tasks.vision包下类名HandLandmarker参考 Java 实现旧 Solutions 的调用方式不再适用。初始化方式与 Python 一致先构造含模型路径的 Options 对象再由 options 建实例.tflite 要打进 assets 资源。时间戳视频模式调用都要带毫秒时间戳跟踪器靠它关联前后帧iOS 侧对应的MPPHandLandmarker见 头文件在detectVideoFrame时同样要求传时间戳。自检清单交付前过一遍这 6 项 ✅模型路径真实存在且 full / lite 与目标平台匹配。running_mode与输入类型一致静态图 IMAGE、视频文件 VIDEO、摄像头 LIVE_STREAM。LIVE_STREAM 模式下已设置result_callback否则创建实例时校验直接失败。VIDEO 模式下每帧传入单调递增的毫秒时间戳。num_hands按业务上限设置别依赖默认值 1。低端设备上换了 lite 模型或把输入缩到 640×480 再送检。行动清单读完就可以做的 4 件事pip install mediapipe --upgrade把版本固定在 ≥0.9.0。下载 full/lite 两个模型用os.path.exists验证路径。代码里的Hands全部换成HandLandmarker参数按前面的映射逐项翻译。实时场景切到 LIVE_STREAM 加回调按清单逐条自测后再上线。Hand Landmarker 与人脸、姿态等任务共用同一套 Tasks 任务架构这套迁移打法可以直接平移到其他视觉模块上一次学会处处能用。【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

【模拟电子电路-电子元器件】

【模拟电子电路-电子元器件】

2026/9/2 12:35:46

模拟电子电路-电子元器件 ■ 电路公式 ■ 01. 欧姆定律 I = U/R ■ 02. 功率计算 P(W)=U*I ■ 03. 焦耳定律 ■ 硬件名词 ■ 01 耦合 ■ 02 阻抗 ■ 001 阻抗匹配 ■ 002 特性阻抗 ■ 03 电桥 ■ 04 谐振 ■ 05 纹波 ■ 06 谐波 ■ 07 滤波电容、去耦电容、旁路电容 ■ 08 噪…

AionUi 高级设置 3 步上手:多模型接入、自定义主题与多 Agent 管理

AionUi 高级设置 3 步上手:多模型接入、自定义主题与多 Agent 管理

2026/9/2 12:35:46

AionUi 高级设置 3 步上手:多模型接入、自定义主题与多 Agent 管理 【免费下载链接】AionUi Open-source 24/7 Cowork app for OpenClaw, Hermes, Claude Code, Codex, OpenCode and 20 more CLI Agent | Customize your assistants | Team them up|Star…

机器学习----Boosting算法

机器学习----Boosting算法

2026/9/2 12:25:45

Boosting 的详细工作流程Boosting 公式详解Boosting 是一种集成学习方法,通过组合多个弱分类器构建强分类器。以下是 AdaBoost(最常用的 Boosting 算法)的核心公式及分步讲解:1. 初始化样本权重假设有 N 个样本,初始权…

电力系统功率失衡影响与调频控制技术解析

电力系统功率失衡影响与调频控制技术解析

2026/9/2 13:35:48

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

vue-vben-admin AI 模块完整指南:5 分钟给后台加上数据预测和智能表单校验

vue-vben-admin AI 模块完整指南:5 分钟给后台加上数据预测和智能表单校验

2026/9/2 13:35:48

vue-vben-admin AI 模块完整指南:5 分钟给后台加上数据预测和智能表单校验 【免费下载链接】vue-vben-admin A modern vue admin panel built with Vue3, Shadcn UI, Vite, TypeScript, and Monorepo. Its fast! 项目地址: https://gitcode.com/GitHub_Trending/v…

Lightpanda 无头浏览器完整指南:省 9 倍内存、快 11 倍的极速方案

Lightpanda 无头浏览器完整指南:省 9 倍内存、快 11 倍的极速方案

2026/9/2 13:35:48

Lightpanda 无头浏览器完整指南:省 9 倍内存、快 11 倍的极速方案 【免费下载链接】browser Lightpanda: the headless browser designed for AI and automation 项目地址: https://gitcode.com/GitHub_Trending/browser32/browser AI 代理、大规模网页抓取、…

大模型推理加速100倍的工程路线与关键技术

大模型推理加速100倍的工程路线与关键技术

2026/9/2 13:35:48

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

4GB 显存如何跑 70B 大模型:AirLLM 低显存推理快速上手

4GB 显存如何跑 70B 大模型:AirLLM 低显存推理快速上手

2026/9/2 13:35:48

4GB 显存如何跑 70B 大模型:AirLLM 低显存推理快速上手 【免费下载链接】airllm AirLLM 70B inference with single 4GB GPU 项目地址: https://gitcode.com/GitHub_Trending/ai/airllm 跑一次 70B 推理,控制台蹦出一行 CUDA out of memory&#…

GSD Rust原生引擎性能优化全解析:ripgrep搜索与gitignore感知文件发现如何实现毫秒级响应

GSD Rust原生引擎性能优化全解析:ripgrep搜索与gitignore感知文件发现如何实现毫秒级响应

2026/9/2 13:25:48

GSD Rust原生引擎性能优化全解析:ripgrep搜索与gitignore感知文件发现如何实现毫秒级响应 【免费下载链接】gsd-2 A powerful meta-prompting, context engineering and spec-driven development system that enables agents to work for long periods of time auto…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/9/2 10:08:07

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/9/2 12:11:52

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/9/1 23:49:08

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

单片机毕业设计-基于单片机与蓝牙通讯的输液状态监测终端设计与开发 基于 STM32 或 51 单片机的液位‑滴速‑温度多参数输液监护装置设计(024005)

单片机毕业设计-基于单片机与蓝牙通讯的输液状态监测终端设计与开发 基于 STM32 或 51 单片机的液位‑滴速‑温度多参数输液监护装置设计(024005)

2026/9/2 0:04:59

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

DeepSeek字幕翻译实战:从API调用到批量SRT转中文的完整方案

DeepSeek字幕翻译实战:从API调用到批量SRT转中文的完整方案

2026/9/2 0:04:59

这次我们来看一个很实用的 DeepSeek 落地场景:用 DeepSeek 把英文视频字幕自动翻译成中文。具体案例是《恶魔君》1989 年第 28 集的英转中字幕任务,标题写得很直白,但背后其实是一整套可以复用的技术流程:字幕解析、模型调用、批量…

用Python搭建搞笑语音助手:从语音识别到语音合成全教程

用Python搭建搞笑语音助手:从语音识别到语音合成全教程

2026/9/2 0:04:59

当你家里摆着一台天猫精灵,却总希望语音助手偶尔“不正经”一点,不用官方腔回答问题,而是张口就接几句搞笑段子,会是什么体验?我最近动手验证了一下这个想法——没有去改装任何市面上现有的智能音箱,而是直…

远程协作的工作台整理

远程协作的工作台整理

2026/9/2 6:21:32

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/2 6:21:32

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/2 2:45:06

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…