Una implementación de código para la estimación avanzada de pose humana utilizando MediaPipe, OpenCV y Matplotlib

La estimación de pose humana es una tecnología de visión por computadora de vanguardia que transforma los datos visuales en ideas procesables sobre el movimiento humano. Utilizando avanzado aprendizaje automático Modelos como las bibliotecas Blazepose y potentes de MediaPipe como OpenCV, los desarrolladores pueden rastrear puntos clave del cuerpo con precisión sin precedentes. En este tutorial, exploramos la integración perfecta de estos, demostrando cómo los marcos basados ​​en Python permiten la detección de pose sofisticada en varios dominios, desde análisis deportivo hasta monitoreo de atención médica y aplicaciones interactivas.

Primero, instalamos las bibliotecas esenciales:

!pip install mediapipe opencv-python-headless matplotlib

Luego, importamos las bibliotecas importantes necesarias para nuestra implementación:

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

Inicializamos el modelo de pose MediaPipe en modo de imagen estática con segmentación habilitada y una confianza mínima de detección de 0.5. También importa servicios públicos para dibujar puntos de referencia y aplicar estilos de dibujo.

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
)

Aquí, definimos la función Detect_Pose, que lee una imagen, la procesa para detectar puntos de referencia humanos utilizando MediaPipe y devuelve la imagen anotada junto con los puntos de referencia detectados. Si se encuentran puntos de referencia, se dibujan utilizando un estilo predeterminado.

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

Definimos la función Visualize_Pose, que muestra las imágenes originales y anotadas de pose una vez al lado con matplotlib. La función Extract_KeyPoints Convierte los puntos de referencia detectados en un diccionario de puntos clave con su nombre con sus coordenadas X, Y, Z y puntajes de visibilidad.

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

Finalmente, cargamos una imagen de la ruta especificada, detectamos y visualizamos los puntos de referencia de pose humanos usando MediaPipe, y luego extraen e imprimen las coordenadas y la visibilidad de cada punto clave detectado.

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}")
Muestra de salida procesada

En este tutorial, exploramos la estimación de pose humana utilizando MediaPipe y OpenCV, demostrando un enfoque integral para la detección del punto clave del cuerpo. Implementamos una tubería robusta que transforma las imágenes en mapas esqueléticos detallados, cubriendo pasos clave, incluida la instalación de la biblioteca, la creación de funciones de detección de pose, las técnicas de visualización y la extracción de punto clave. Utilizando modelos avanzados de aprendizaje automático, mostramos cómo los desarrolladores pueden transformar datos visuales en bruto en información significativa de movimiento en varios dominios, como el análisis deportivo y el monitoreo de la salud.


Aquí está el Cuaderno de colab. Además, no olvides seguirnos Gorjeo y únete a nuestro Canal de telegrama y LinkedIn GRsalpicar. No olvides unirte a nuestro 85k+ ml de subreddit.


Asif Razzaq es el CEO de MarktechPost Media Inc .. Como empresario e ingeniero visionario, ASIF se compromete a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, MarktechPost, que se destaca por su cobertura profunda de noticias de aprendizaje automático y de aprendizaje profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el público.