728x90
미디어파이프란 구글에서 제공하는 AI 오픈소스이다
미디어파이프 설치
pip install mediapipe
필요 라이브러리 임포트
import mediapipe as mp
import cv2
mp.solutions: 미디어파이프 솔루션들이 포함되어 쉽게 사용할 수 있다
- 얼굴 탐지
mp.solutions.face_detection
- 얼굴 메시
mp.solutions.face_mesh
- 손 추적
mp.solutions.hands
- 포즈 추정
mp.solutions.pose
- 신체 전체 추적
mp.solutions.holistic
- 랜드마크 시각화 툴
mp.solutions.drawing_utils
- 미리 정의된 스타일 툴
mp.solutions.drawing_styles
- 인물과 배경 분리
mp.solutions.selfie_segmentation
https://github.com/google-ai-edge/mediapipe/blob/master/docs/solutions/pose.md
33개의 랜드마크 추출
미디어파이프
mp_pose = mp.solutions.pose
mp_drawing = mp.solutions.drawing_utils
mp_drawing_styles = mp.solutions.drawing_styles
pose = mp_pose.Pose()
이미지 넣기
img = cv2.imread('data/yoga.jpg')
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 결과 33개 좌표 값
result = pose.process(img_rgb) # rgb로 넣어줘야 한다
# print(result.pose_landmarks)
결과는 이런 식으로 나옵니다
landmark {
x: 0.355119169
y: 0.78029573
z: -0.0436405
visibility: 0.997867346
}
landmark {
x: 0.343139768
y: 0.77909714
z: -0.0654732585
visibility: 0.99845922
}
landmark {
x: 0.342421114
y: 0.776517332
z: -0.0654517
visibility: 0.998709559
}
landmark {
x: 0.34174782
y: 0.773604512
z: -0.0654567704
visibility: 0.998589
}
landmark {
x: 0.343171686
y: 0.779188275
z: -0.0311653
visibility: 0.998814583
}
landmark {
x: 0.342517614
y: 0.777040541
z: -0.0311453324
visibility: 0.998945415
}
인식 됐으면 그리기
# 인식이 됐으면
if result.pose_landmarks:
mp_drawing.draw_landmarks(
img,
result.pose_landmarks,
mp_pose.POSE_CONNECTIONS,
mp_drawing_styles.get_default_pose_landmarks_style()
)
좌표 값 추출
# 좌표가 width와 height를 1로 봤을 때 얼만큼 위치했는지(*width, *height하면 실제 좌표 나온다)
hip_x = result.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_HIP].x
hip_y = result.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_HIP].y
print(hip_x)
print(hip_y)
print(f'real x: {hip_x * img.shape[1]}') # *width
print(f'real y: {hip_y * img.shape[0]}') # *height
이미지 출력
cv2.imshow('face_mesh', img)
cv2.waitKey()
cv2.destroyAllWindows()
'비전' 카테고리의 다른 글
[MediaPipe] 얼굴 매쉬2 (0) | 2024.09.03 |
---|---|
[MediaPipe] 얼굴 매쉬1 (1) | 2024.09.02 |
[MediaPipe] 얼굴 인식 (0) | 2024.08.23 |
[OpenCV] 특정 색 검출 (0) | 2024.08.20 |
[OpenCV] 그리기 함수 (0) | 2024.08.19 |