반응형
포즈를 산정하기 위한 절차를 수행한다.
import cv2
import mediapipe as mp
import os
# MediaPipe Pose 모델 초기화
mp_pose = mp.solutions.pose
mp_drawing = mp.solutions.drawing_utils
# 스크립트 경로와 이미지 경로 설정
script_dir = os.path.dirname(os.path.abspath(__file__))
image_path = os.path.join(script_dir, 'image.jpg')
# 이미지 읽기
image = cv2.imread(image_path)
# 이미지 크기 조정 (height를 1080에 맞춤)
aspect_ratio = image.shape[1] / image.shape[0]
new_height = 1080
new_width = int(aspect_ratio * new_height)
resized_image = cv2.resize(image, (new_width, new_height))
# Pose 추정 모델을 사용하여 사람의 관절 추출
with mp_pose.Pose(static_image_mode=True, min_detection_confidence=0.5) as pose:
# BGR 이미지를 RGB로 변환
image_rgb = cv2.cvtColor(resized_image, cv2.COLOR_BGR2RGB)
# 관절 위치 추정 수행
results = pose.process(image_rgb)
# 관절 포인트와 연결을 이미지에 그리기
annotated_image = resized_image.copy()
if results.pose_landmarks:
mp_drawing.draw_landmarks(
annotated_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, circle_radius=2)
)
# 원본 이미지와 관절 포인트가 표시된 이미지를 나란히 표시
combined_image = cv2.hconcat([resized_image, annotated_image])
# 결과 이미지 표시
cv2.imshow('Original and Pose Estimation', combined_image)
cv2.waitKey(0)
# 리소스 해제
cv2.destroyAllWindows()
[실행 결과]
$ python point_mediapipe.py

이미지의 관절 위치를 추정
반응형
'라즈베리파이' 카테고리의 다른 글
| harris.py (0) | 2025.09.20 |
|---|---|
| laplacian.py (0) | 2025.09.20 |
| mediapip.py (0) | 2025.09.19 |
| sobel.py (0) | 2025.09.19 |
| 라즈베리파이 5에서 tensorflow가 설치된 opencv 개발환경 설정 (0) | 2025.09.19 |



