使用MediaPipe,OpenCV和Matplotlib的高級人姿勢估算的代碼實現

人姿勢估計是一種尖端的計算機視覺技術,可將視覺數據轉化為有關人類運動的可行見解。通過利用MediaPipe的Blazepose和OpenCV等強大的庫(例如OPENCV)等高級機器學習模型,開發人員可以以前所未有的精度跟踪身體要點。在本教程中,我們探討了這些內容的無縫集成,展示了基於Python的框架如何使各個領域的複雜姿勢檢測從體育分析到醫療保健監測和交互式應用程序。

首先,我們安裝了基本庫:

!pip install mediapipe opencv-python-headless matplotlib

然後,我們導入實施所需的重要庫:

import cv2
import mediapipe as mp
import matplotlib.pyplot as plt
import numpy as np

我們在靜態圖像模式下以啟用分割的靜態圖像模式初始化了MediaPipe姿勢模型,最小檢測置信度為0.5。它還進口公用事業,用於繪製地標和應用繪圖樣式。

mp_pose = mp.solutions.pose
mp_drawing = mp.solutions.drawing_utils
mp_drawing_styles = mp.solutions.drawing_styles


pose = mp_pose.Pose(
    static_image_mode=True,
    model_complexity=1,
    enable_segmentation=True,
    min_detection_confidence=0.5
)

在這裡,我們定義了readect_pose函數,該函數讀取圖像,對其進行處理以使用MediaPipe檢測人姿​​勢地標,並將帶有帶​​的圖像返回帶有檢測的地標。如果找到地標,則使用默認樣式繪製它們。

def detect_pose(image_path):
    image = cv2.imread(image_path)
    image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)


    results = pose.process(image_rgb)


    annotated_image = image_rgb.copy()
    if results.pose_landmarks:
        mp_drawing.draw_landmarks(
            annotated_image,
            results.pose_landmarks,
            mp_pose.POSE_CONNECTIONS,
            landmark_drawing_spec=mp_drawing_styles.get_default_pose_landmarks_style()
        )


    return annotated_image, results.pose_landmarks

我們定義了可視化函數,該功能使用matplotlib並排顯示原始圖像和姿勢被註銷的圖像。 Extract_keypoints函數將檢測到的姿勢地標轉換為具有X,Y,Z坐標和可見性分數的命名鍵盤字典。

def visualize_pose(original_image, annotated_image):
    plt.figure(figsize=(16, 8))


    plt.subplot(1, 2, 1)
    plt.title('Original Image')
    plt.imshow(cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB))
    plt.axis('off')


    plt.subplot(1, 2, 2)
    plt.title('Pose Estimation')
    plt.imshow(annotated_image)
    plt.axis('off')


    plt.tight_layout()
    plt.show()


def extract_keypoints(landmarks):
    if landmarks:
        keypoints = {}
        for idx, landmark in enumerate(landmarks.landmark):
            keypoints(mp_pose.PoseLandmark(idx).name) = {
                'x': landmark.x,
                'y': landmark.y,
                'z': landmark.z,
                'visibility': landmark.visibility
            }
        return keypoints
    return None

最後,我們從指定的路徑加載圖像,使用MediaPipe檢測和可視化人姿勢地標,然後提取並打印每個檢測到的關鍵點的坐標和可見性。

image_path="/content/Screenshot 2025-03-26 at 12.56.05 AM.png"
original_image = cv2.imread(image_path)
annotated_image, landmarks = detect_pose(image_path)


visualize_pose(original_image, annotated_image)


keypoints = extract_keypoints(landmarks)
if keypoints:
    print("Detected Keypoints:")
    for name, details in keypoints.items():
        print(f"{name}: {details}")
樣品處理的輸出

在本教程中,我們使用MediaPipe和OpenCV探索了人類姿勢估計,展示了一種全面的人體關鍵點檢測方法。我們實施了一條強大的管道,該管道將圖像轉換為詳細的骨骼圖,涵蓋了關鍵步驟,包括庫安裝,姿勢檢測功能創建,可視化技術和鍵盤提取。使用高級機器學習模型,我們展示了開發人員如何將原始視覺數據轉換為有意義的運動見解,例如體育分析和醫療保健監測。


這是 COLAB筆記本。另外,別忘了跟隨我們 嘰嘰喳喳 並加入我們 電報頻道LinkedIn GrOUP。別忘了加入我們的 85k+ ml子雷迪特


Asif Razzaq是Marktechpost Media Inc.的首席執行官。作為一位有遠見的企業家和工程師,ASIF致力於利用人工智能的潛力來實現社會利益。他最近的努力是推出了人工智能媒體平台Marktechpost,該平台的深入覆蓋了機器學習和深度學習新聞,既在技術上都可以聽起來,既可以通過技術上的聲音,又可以被廣泛的受眾理解。該平台每月有超過200萬個觀點,說明了其在受眾中的受歡迎程度。

Source link

Scroll to Top