To Do
✅ opencv & mediapipe 패키지 설치
✅ mediapipe 활용해보기
Mediapipe(미디어파이프)
미디어파이프는 머신러닝(Machine Leanring)을 이용하여,
영상이나 라이브 스트리밍 이미지에 대한 분석을 할 수 있는 모듈/패키지이다.
파이썬에서는 대표적으로 얼굴 인식, 포즈 인식 등이 가능하다.
공식 사이트에 따르면, 파이썬에서는 다음과 같이 제한된 기능이 제공된다.
Android | iOS | C++ | Python | JS | Coral | |
Face Detection | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Face Mesh | ✅ | ✅ | ✅ | ✅ | ✅ | |
Iris | ✅ | ✅ | ✅ | |||
Hands | ✅ | ✅ | ✅ | ✅ | ✅ | |
Pose | ✅ | ✅ | ✅ | ✅ | ✅ | |
Holistic | ✅ | ✅ | ✅ | ✅ | ✅ | |
Selfie Segmentation | ✅ | ✅ | ✅ | ✅ | ✅ | |
Hair Segmentation | ✅ | ✅ | ||||
Object Detection | ✅ | ✅ | ✅ | ✅ | ||
Box Tracking | ✅ | ✅ | ✅ | |||
Instant Motion Tracking | ✅ | |||||
Objectron | ✅ | ✅ | ✅ | ✅ | ||
KNIFT | ✅ | |||||
AutoFlip | ✅ | |||||
MediaSequence | ✅ | |||||
YouTube 8M | ✅ |
여기서는 Pose에 관련한 것만 다룰 것이기 때문에 충분하다.
그럼 이제 설치하고 놀아보자.
Installation(설치)
conda create -n 가상환경
conda activate 가상환경
conda install python=3.7.9
pip install mediapipe
conda install opencv
가상환경을 만들어 두고 진행해야 다른 라이브러리와 충돌이 나지 않으니
꼭! 가상환경을 구축해 놓고 진행하는 습관을 들이자.
여러 번 설치에 실패를 했어서 위와같이 순서대로 진행하면 나 같은 경우에는 충돌이 나지 않았다.
Let's play(가지고 놀아보자)
[ 예시: 운동 영상에서 Pose 트래킹]
아래와 같은 예제 코드로 경로의 영상을 불러오면,
import cv2
import mediapipe as mp
import time
mpDraw = mp.solutions.drawing_utils
mpPose = mp.solutions.pose
pose = mpPose.Pose()
cap = cv2.VideoCapture('pullup_videos/2.mp4')
pTime = 0
while True:
success, img = cap.read() # img => BGR
# convert to RGB for the compatibility with mediapipe library
imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
results = pose.process(imgRGB)
if results.pose_landmarks:
"""
results.pose_landmarks: 특징점 추출
mpPose.POSE_CONNECTIONS: 특징점 연결
"""
mpDraw.draw_landmarks(img, results.pose_landmarks, mpPose.POSE_CONNECTIONS)
for id, lm in enumerate(results.pose_landmarks.landmark):
h, w, c = img.shape
print(id, lm)
# pixel value로 변환
cx, cy = int(lm.x*w), int(lm.y*h)
cv2.circle(img, (cx,cy), 5, (255,0,0), cv2.FILLED)
cTime = time.time()
fps = 1/(cTime-pTime)
pTime = cTime
cv2.putText(img, str(int(fps)), (70,50), cv2.FONT_HERSHEY_PLAIN, 3,
(255,0,0), 3)
cv2.imshow("Image", img)
cv2.waitKey(1) # 1ms delay
다음과 같은 모션 트래킹이 가능하다.
'Coding(코딩) > Python' 카테고리의 다른 글
[Python] 폴더 내 모든 특정 확장자(.txt .csv) 파일 접근하기 (0) | 2023.07.10 |
---|---|
[Python] 파이썬 Pandas AI 사용법과 프롬프트(prompt) 입력 예시 (0) | 2023.06.21 |
[Python] 텍스트 파일 읽고 쓰고 대체하기 - pandas 라이브러리 활용 (0) | 2023.05.09 |
[Python] python 코드 git에 올리기 전 할 일들 (0) | 2023.01.27 |