Современная оценка позы человека: реализация с MediaPipe и OpenCV

Современная оценка позы человека: реализация с MediaPipe и OpenCV

Внедрение кода для продвинутой оценки человеческой позы с использованием MediaPipe, OpenCV и Matplotlib

Оценка позы человека — это передовая технология компьютерного зрения, которая преобразует визуальные данные в полезные инсайты о движении человека. Используя современные модели, такие как MediaPipe и BlazePose, а также мощные библиотеки, такие как 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 Pose

Мы инициализируем модель 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
)

Функция обнаружения позы

Мы определяем функцию detect_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.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

Функция визуализации позы

Мы определяем функцию visualize_pose, которая отображает оригинальное и аннотированное изображение рядом друг с другом с использованием Matplotlib.


def visualize_pose(original_image, annotated_image):
plt.figure(figsize=(16, 8))
plt.subplot(1, 2, 1)
plt.title('Оригинальное изображение')
plt.imshow(cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.subplot(1, 2, 2)
plt.title('Оценка позы')
plt.imshow(annotated_image)
plt.axis('off')
plt.show()

Извлечение ключевых точек

Функция extract_keypoints преобразует обнаруженные ключевые точки позы в словарь с именованными ключевыми точками и их координатами x, y, z, а также оценками видимости.


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("Обнаруженные ключевые точки:")
for name, details in keypoints.items():
print(f"{name}: {details}")

Практическое применение

В этом руководстве мы исследовали оценку позы человека с использованием MediaPipe и OpenCV, демонстрируя целостный подход к обнаружению ключевых точек тела. Мы реализовали надежный процесс, преобразующий изображения в детализированные скелетные карты, охватывающий ключевые этапы, включая установку библиотек, создание функции обнаружения позы, техники визуализации и извлечение ключевых точек. Используя передовые модели машинного обучения, мы показали, как разработчики могут преобразовать сырые визуальные данные в значимые инсайты о движениях в различных областях, таких как спортивная аналитика и мониторинг здоровья.

Сделайте шаг к автоматизации вашего бизнеса

Исследуйте, как технологии искусственного интеллекта могут преобразовать ваш подход к работе, например, через реализацию оценки позы человека. Обнаружьте, какие процессы можно автоматизировать, и найдите моменты в взаимодействии с клиентами, где искусственный интеллект может добавить наибольшую ценность. Определите важные ключевые показатели эффективности, чтобы убедиться, что ваши инвестиции в ИИ действительно приносят положительный эффект для бизнеса. Начните с небольшого проекта, собирайте данные о его эффективности и постепенно расширяйте использование ИИ в вашей работе.

Если вам нужна помощь в управлении ИИ в бизнесе, свяжитесь с нами по адресу hello@itinai.ru. Чтобы быть в курсе последних новостей ИИ, подпишитесь на наш Telegram: https://t.me/itinai.

Посмотрите практический пример решения на базе ИИ: бот для продаж от https://itinai.ru/aisales, разработанный для автоматизации общения с клиентами круглосуточно и управления взаимодействиями на всех этапах клиентского пути.

Новости в сфере искусственного интеллекта