퍼듀 프로젝트
Mediapipe Pose
주제: Vehicle theft prevention system based on Computer vision and IoT sensors
pose_landmarks
- 1point 좌표당 x, y, z의 좌표 값과 visbility 총 4가지 데이터를 받을 수 있음
- x: 이미지 너비, 0.0 ~ 1.0 사이값으로 정규화된 랜드마크 좌표
- y: 이미지 높이, 0.0 ~ 1.0 사이값으로 정규화된 랜드마크 좌표
- z
- x 좌표와 같은 척도를 사용하는 좌표 값
- 엉덩이 중심점 깊이를 원점으로 하여 랜드마크의 깊이를 나타냄
- 엉덩이 중심점과 카메라 거리를 측정 후 0.0 ~ 1.0 사이값으로 정규화된 랜드마크 좌표
- 값이 작으면 카메라에 가까워짐
- visibility: 0.0 ~ 1.0 사이값으로 이미지에서 랜드마크가 보이는 가능성
- x, y, z 좌표 값: 중심점 기준이므로 결론적으로 -1.0 ~ 1.0 값
- 한 사진의 포즈에서 skeleton 정보가 33개 있으므로 총 132가지 정보를 추출할 수 있음
실시간 웹캠에서 포즈 감지 및 각도 계산하기
import cv2
import mediapipe as mp
import numpy as np
def calculate_angle(a, b, c):
a = np.array(a)
b = np.array(b)
c = np.array(c)
radians = np.arctan2(c[1] - b[1], c[0] - b[0]) - np.arctan2(a[1] - b[1], a[0] - b[0])
angle = np.abs(radians * 180.0 / np.pi)
if angle > 180.0:
angle = 360 - angle
return angle
cap = cv2.VideoCapture(0)
with mp_pose.Pose(min_detection_confidence=0.5, min_tracking_confidence=0.5) as pose:
while cap.isOpened():
ret, frame = cap.read()
image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
image.flags.writeable = False
results = pose.process(image)
image.flags.writeable = True
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
mp_drawing.draw_landmarks(image, results.pose_landmarks, mp_pose.POSE_CONNECTIONS,
# Landmarks
mp_drawing.DrawingSpec(color=(245, 117, 66), thickness=2, circle_radius=2),
# Connections
mp_drawing.DrawingSpec(color=(245, 66, 230), thickness=2, circle_radius=2))
try:
landmarks = results.pose_landmarks.landmark
shoulder = [landmarks[mp_pose.PoseLandmark.LEFT_SHOULDER.value].x, landmarks[mp_pose.PoseLandmark.LEFT_SHOULDER.value].y]
elbow = [landmarks[mp_pose.PoseLandmark.LEFT_ELBOW.value].x, landmarks[mp_pose.PoseLandmark.LEFT_ELBOW.value].y]
wrist = [landmarks[mp_pose.PoseLandmark.LEFT_WRIST.value].x, landmarks[mp_pose.PoseLandmark.LEFT_WRIST.value].y]
angle = calculate_angle(shoulder, elbow, wrist)
except:
pass
cv2.imshow('Mediapipe Feed', image)
if cv2.waitKey(10) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
'모각코' 카테고리의 다른 글
[모각코] 물랑룽즈 - 5차 (0) | 2024.02.02 |
---|---|
[모각코] 물랑룽즈 - 4차 (0) | 2024.02.01 |
[모각코] 물랑룽즈 - 3차 (0) | 2024.01.28 |
[모각코] 물랑룽즈 - 2차 (0) | 2024.01.22 |
[모각코] 물랑룽즈 - 1차 (0) | 2024.01.14 |