🧍 Raspberry Pi 5 + PiCamera2 + MediaPipe Pose 偵測教學

適用於健身監測、手勢互動、跌倒辨識、AI 體感遊戲等應用。


🧰 一、硬體與軟體需求

✅ 硬體需求:

  • Raspberry Pi 5

  • Raspberry Pi Camera Module v2/v3(使用 CSI)

  • 顯示器 或 VNC / SSH

✅ 軟體環境:

  • Raspberry Pi OS Bookworm(64-bit)

  • Python 3.9+

  • OpenCV + Picamera2

  • MediaPipe 0.10.9(支援 ARM64)


🛠️ 二、環境安裝步驟

1️⃣ 啟用相機

sudo raspi-config
# → Interface Options → Camera → Enable
sudo reboot

2️⃣ 安裝必要套件

sudo apt update
sudo apt install -y python3-picamera2 python3-opencv libatlas-base-dev

3️⃣ 安裝 MediaPipe

pip install mediapipe==0.10.9

確認成功安裝:

python3 -c "import mediapipe as mp; print(mp.__version__)"

📸 三、PiCamera2 + Pose 偵測完整程式

🔹 檔名:pose_detection_picamera2.py

import cv2
import mediapipe as mp
from picamera2 import Picamera2
import time

# 初始化 MediaPipe Pose 模組與繪圖工具
mp_pose = mp.solutions.pose
mp_drawing = mp.solutions.drawing_utils
pose = mp_pose.Pose(static_image_mode=False,
                    model_complexity=1,
                    enable_segmentation=False,
                    min_detection_confidence=0.5,
                    min_tracking_confidence=0.5)

# 初始化 PiCamera2
picam2 = Picamera2()
picam2.preview_configuration.main.size = (640, 480)
picam2.preview_configuration.main.format = "RGB888"
picam2.configure("preview")
picam2.start()
time.sleep(2)

while True:
    # 讀取影像
    frame = picam2.capture_array()
    image = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)

    # 姿勢分析
    results = pose.process(image)

    # 畫出關鍵點與連線
    if results.pose_landmarks:
        mp_drawing.draw_landmarks(
            image,
            results.pose_landmarks,
            mp_pose.POSE_CONNECTIONS,
            mp_drawing.DrawingSpec(color=(0,255,0), thickness=2, circle_radius=2),
            mp_drawing.DrawingSpec(color=(0,0,255), thickness=2))

    # 顯示畫面
    cv2.imshow("RP5 + Pose Detection", image)

    if cv2.waitKey(1) & 0xFF == 27:
        break

cv2.destroyAllWindows()
picam2.stop()

✅ 執行方式

python3 pose_detection_picamera2.py

若一切順利,你會看到攝影畫面中的人體部位會被標出,如頭、手肘、膝蓋、腳踝等,並有線條連接。


📍 MediaPipe Pose 偵測到的身體關鍵點(共33個)

常用的如:

  • LEFT_SHOULDER, RIGHT_SHOULDER

  • LEFT_ELBOW, RIGHT_ELBOW

  • LEFT_KNEE, RIGHT_KNEE

  • NOSE, LEFT_EYE, RIGHT_EYE

可以進一步作為動作偵測、角度分析的依據。


🧠 延伸應用建議

應用方向 技術建議
手勢控制 根據手掌與肩膀距離設計手勢命令
健身監測 判斷關節角度(例如深蹲、平板支撐正確性)
體感互動 將肢體動作轉換成輸入控制(例如跳舞機)
錄影分析 記錄每一秒的人體關鍵點用來後處理(CSV或JSON)

📦 常見錯誤排除

問題 解決方式
ImportError: mediapipe not found 請確認已使用 pip install mediapipe==0.10.9
黑畫面 / 沒畫面 確保相機模組連接良好,並有 picam2.start()
cv2.error 顯示參數錯誤 通常是 OpenCV 或 Mediapipe 安裝版本不對,重新安裝即可

📚 延伸資源


 

文章標籤
全站熱搜
創作者介紹
創作者 liusming 的頭像
liusming

劉老師的跨域創想工坊

liusming 發表在 痞客邦 留言(0) 人氣(6)