Day12 身體關鍵點檢測 Pose Landmark Detection
🟡 先看看程式的效果
今天的程式是利用 OpenCV 和 MediaPipe 來進行即時偵測人體姿勢關鍵點, 是這類人體姿勢偵測程式的基本型, 之後連續幾天會建基於這個程式逐步增加不同的功能。
Today’s program utilizes OpenCV and MediaPipe to perform real-time detection of human pose key points. This is a basic version of human pose detection programs, and over the next few days, additional features will be incrementally added to this program.
🟡 學習目標
這個程式展示了如何進行即時的視頻處理和人體姿勢分析。這種即時處理在許多實際應用中都非常重要,比如動作遊戲等。
🔻以下是 Mediapipe 對人體姿勢辨識的 Landmarks 以及其編號。
🟡 程式碼
請先下載 “Pose Landmark Detection 身體關鍵點檢測.py”
請按此下載
'''
Python + AI in 21 days
https://jasonworkshop.com/python
Designed by Jason Workshop
[請勿修改以上內容]
---
預備工作:
首先,請確保已安裝 opencv-python, mediapipe 模組
如不確定可直接在 Windows 的 cmd prompt 執行以下指定
pip install opencv-python mediapipe
'''
import cv2
import mediapipe as mp
# 初始化 MediaPipe Pose 模組
mp_pose = mp.solutions.pose
pose = mp_pose.Pose(static_image_mode=False, model_complexity=1, enable_segmentation=False, min_detection_confidence=0.5) # min_detection_confidence 為最低可信度
mp_drawing = mp.solutions.drawing_utils
# 開啟攝影機
cap = cv2.VideoCapture(0)
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
# 轉換 BGR 圖像到 RGB
rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# 偵測身體姿勢
result = pose.process(rgb_frame)
# 繪製身體關鍵點和連線
if result.pose_landmarks:
mp_drawing.draw_landmarks(
image=frame,
landmark_list=result.pose_landmarks,
connections=mp_pose.POSE_CONNECTIONS,
landmark_drawing_spec=mp_drawing.DrawingSpec(color=(0, 255, 0), thickness=2, circle_radius=2),
connection_drawing_spec=mp_drawing.DrawingSpec(color=(255, 255, 255), thickness=1, circle_radius=2))
# 顯示圖像
cv2.imshow('Pose Landmark Detection', frame)
if cv2.waitKey(1) & 0xFF == 27: # 按下 ESC 鍵退出
break
# 釋放攝影機並關閉所有視窗
cap.release()
cv2.destroyAllWindows()
🟡 小小挑戰一下
大家可以嘗試進行一些修改或改良喔! 例如:
✌️添加一些特定姿勢的檢測,比如檢測是否站立、坐下或舉手等。
✌️計算關鍵點之間的角度,可以用來分析運動姿勢是否正確。
😁 明天見!