
MediaPipe Hands 教程3 分钟给摄像头装上手部追踪实时锁定 21 个关键点【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe想让自己的程序看懂你比出的手势吗MediaPipe Hands 就是一套免费、跨平台的手部追踪工具它能在摄像头画面里实时地找出手、并标定出 21 个手部关键点。无论是新手写第一个手势 Demo还是想在 AR、手语识别里做点东西这份 MediaPipe教程 都能帮你快速上手看完就能跑通。如何快速安装 MediaPipe 并跑通手部追踪第一步只是装个包一条命令搞定pip install mediapipe装完后用下面这段最短代码打开摄像头就能在屏幕上看到被点出来的手import cv2 import mediapipe as mp mp_hands mp.solutions.hands # 视频流模式复用前一帧结果来跟踪省算力 hands mp_hands.Hands( static_image_modeFalse, max_num_hands2, min_detection_confidence0.5, min_tracking_confidence0.5) cap cv2.VideoCapture(0) while cap.isOpened(): ok, frame cap.read() if not ok: continue frame cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) # 先转成 RGB 再推理 result hands.process(frame) if result.multi_hand_landmarks: for lm in result.multi_hand_landmarks: # 把手部关键点连线画出来 mp.solutions.drawing_utils.draw_landmarks( frame, lm, mp_hands.HAND_CONNECTIONS) cv2.imshow(MediaPipe Hands, frame) if cv2.waitKey(5) 0xFF 27: # 按 Esc 退出 break cap.release()运行后你会看到手一进入画面21 个关节点就被连成一张手形网手指怎么动它就跟得有多快。跑通这一步你就已经拥有了一个可用的手部关键点检测入口。原理拆解MediaPipe Hands 的两阶段手部追踪它为什么又准又省关键在于把一件难事拆成了两步。第一步先找手掌在哪。系统先扫一整张图粗略定位出手掌的大致区域——好比用望远镜先在人群里锁定一个目标。第二步再精修 21 个关键点。在裁剪出来的那块小区域里模型才集中精力把 21 个 3D 关节坐标一个个标清楚——这就像换上用微距镜头拍清面部细节。把定位和精修分开好处是后者只处理一小块图模型不必再费神去适应各种旋转、缩放、位移几乎可以把全部算力都押在坐标精度上。在连续视频帧里还有一招更省力既然上一帧已经知道手在哪当前帧就直接用上一帧关键点的位置来框出手的区域接着跟踪只有当模型判断手看不见了时才会重新跑一次昂贵的手掌检测。正是这套能跟就别重找的策略让手部追踪在手机上也能做到实时流畅。每个关键点用归一化坐标表示x、y都在[0.0, 1.0]之间分别按图宽、图高归一z则代表深度数值越小离镜头越近。一张表看懂 MediaPipe Hands 的关键参数参数名默认值一句话作用static_image_modefalsefalse当视频流处理、能跨帧跟踪true每帧都从头检测适合一批互不相关的静态图max_num_hands2最多同时追踪几只手按场景调大调小model_complexity1取0或1越大越准也越慢按设备性能取舍min_detection_confidence0.5检测阶段的最低置信度门槛低于它就不算找到手min_tracking_confidence0.5跟踪阶段的最低置信度门槛掉到它以下就自动触发重新检测小提示左右手的判断默认假设画面是自拍镜像前置摄像头如果你用的是非镜像画面记得在应用里把左右结果对调一下。能拿它做什么手部追踪的三个落地方向AR 交互与虚拟试戴。用 21 个 3D 关键点把真实的手映射到虚拟空间里你可以做戴虚拟戒指、捏合缩放 3D 模型这类操作——手指一动屏幕上的物体就跟着动交互自然得像伸手就能碰到。手势识别与控制。基于关键点的位置关系和运动轨迹你可以定义张开手握拳比 4这些手势做成智能家居开关、PPT 翻页或游戏指令。仓库里的mediapipe/model_maker/python/vision/gesture_recognizer/就提供了用真实手势照片做识别的样例数据可以直接参考。手语识别与翻译。手语是连续动作 手形的组合而手部关键点检测恰好每帧都给出结构化坐标。把它们按时间串起来就能喂给一个分类或序列模型实现手语到文字、语音的实时转写是辅助沟通很有价值的一条路。优化与避坑让手部追踪又快又稳处理视频就开视频流模式。摄像头/录像场景把static_image_mode设为false让它跨帧跟踪、只在丢手时才重检能明显降低延迟只有处理一堆互不相关的静态图才设true。置信度阈值别乱拉满。两个min_*_confidence调太高手会频繁丢失—重新检测画面卡顿调太低又容易误检。建议从默认0.5起步遇到误检就小步上调。按设备选模型复杂度。在低性能设备或追求高帧率时把model_complexity降到0需要更精细的坐标、且算力充裕时再上1。控制同时追踪的手数。max_num_hands只设你真正需要的数量追踪的手越多开销越大没必要就开成 1。给推理减负的小技巧。连续帧处理时可把图像标记为不可写frame.flags.writeable False以按引用传递、减少拷贝这是官方示例里用到的省性能小动作。写在最后MediaPipe Hands 用先定位手掌、再精修 21 个关键点的两段式设计加上跨帧跟踪的省力策略把原本很吃算力的手部追踪做到了手机上也能实时跑。现在你手里已经有安装命令、能跑的代码和一张参数速查表最快的学习方式就是打开摄像头、比个手势亲手把 21 个关键点点亮。更多细节可参考仓库内的 MediaPipe Hands 官方文档祝你玩得开心。【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考