实时手势识别:摄像头 30fps 追踪 21 个关键点

知识库
知识库文档
/tech-stacks/mediapipe/examples/实时手势识别:摄像头 30fps 追踪 21 个关键点.md

文档

MediaPipe 实时手势关键点追踪

目标

用 MediaPipe Hands 实时检测手掌 21 个关键点,在摄像头画面上绘制骨架连线。

完整代码

import cv2
import mediapipe as mp

# ─── 1. 初始化 ───
mp_hands = mp.solutions.hands
mp_drawing = mp.solutions.drawing_utils
mp_drawing_styles = mp.solutions.drawing_styles

hands = mp_hands.Hands(
    static_image_mode=False,   # 视频流模式
    max_num_hands=2,           # 最多 2 只手
    min_detection_confidence=0.7,
    min_tracking_confidence=0.7,
)

cap = cv2.VideoCapture(0)

while cap.isOpened():
    success, frame = cap.read()
    if not success:
        break

    # BGR → RGB
    rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    results = hands.process(rgb)

    # ─── 2. 绘制关键点 ───
    if results.multi_hand_landmarks:
        for hand_landmarks in results.multi_hand_landmarks:
            # 画骨架连线
            mp_drawing.draw_landmarks(
                frame,
                hand_landmarks,
                mp_hands.HAND_CONNECTIONS,
                mp_drawing_styles.get_default_hand_landmarks_style(),
                mp_drawing_styles.get_default_hand_connections_style(),
            )

            # ─── 3. 识别手势 ───
            landmarks = hand_landmarks.landmark
            # 拇指尖 (4) 高于食指尖 (8) = 竖拇指
            if landmarks[4].y < landmarks[8].y and landmarks[4].y < landmarks[12].y:
                cv2.putText(frame, "Thumbs Up!", (50, 50),
                            cv2.FONT_HERSHEY_SIMPLEX, 1.5, (0, 255, 0), 3)

    # FPS 显示
    cv2.putText(frame, "Press 'q' to quit", (10, frame.shape[0] - 10),
                cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)

    cv2.imshow("MediaPipe Hands - Real-time", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

运行步骤

pip install mediapipe opencv-python
python hand_tracking.py
# 对着摄像头比手势,按 'q' 退出

预期效果

  • 实时显示手掌 21 个关键点(指尖、关节、手腕)
  • 各手指骨架连线以不同颜色显示
  • 竖大拇指时画面显示 "Thumbs Up!"
  • 稳定 30 FPS(取决于硬件)

信息

路径
/tech-stacks/mediapipe/examples/实时手势识别:摄像头 30fps 追踪 21 个关键点.md
更新时间
2026/5/31