19차시 [Advanced] MediaPipe를 활용한 손/손가락 인식

leeda06·2023년 7월 20일
0

AIFriendsSchool

목록 보기
19/32

MediaPipe

MediaPipe는 인체나 물체를 대상으로 하는 영상 인식 기능을 AI 모델 개발과 머신러닝을 통해 라이브러리, 패키지 형태로 제공하는 프레임워크입니다. 손 인식과 같은 기능을 제공하는 패키지들을 포함하고 있습니다.

OpenCV

OpenCV는 영상 처리를 위한 대표적인 오픈 소스 라이브러리로, 카메라 데이터를 읽고 영상 반전, 색공간 변경 등 다양한 영상 처리 기능을 제공합니다.

sys 모듈

sys 모듈은 파이썬 인터프리터와 상호작용할 수 있는 함수들을 제공합니다.

hand.py

hand.py는 손 인식에 관련된 기능을 구현한 모듈입니다. 이 모듈은 OpenCV 라이브러리와 sys 모듈, 그리고 MediaPipe 패키지를 import하여 사용합니다. cap.read() 함수를 사용하여 카메라 데이터를 읽고, cv2.flip() 함수를 사용하여 영상을 반전시키며, cv2.cvtColor() 함수를 사용하여 색공간을 변경합니다. 또한, multi_hand_landmarks 변수는 손의 주요 부분에 대한 x, y, z 좌표 정보를 리스트 형태로 담고 있습니다.

fingertop.py

fingertop.py는 관절 사이의 위치를 계산하여 손가락이 펴졌는지 접혔는지를 구분하는 기능을 구현한 모듈입니다. 이 모듈에서는 math 모듈을 import하여 수학과 관련된 함수와 변수들을 사용합니다. math.dist() 함수는 두 점 사이의 거리를 구하는 함수이며, distance() 함수는 두 랜드마크 좌표 사이의 거리를 구하는 함수입니다. cv2.putText() 함수를 사용하여 손가락이 접혔으면 0, 폈으면 1을 이미지에 표시하고, mp.drawing.draw_landmarks() 함수는 파라미터로 지정된 이미지와 인식된 정보, 그리는 방법을 받아들여 그림을 그리는 기능을 수행합니다. mp_drawing_styles는 그리는 색상과 크기를 지정하는 변수들을 담고 있습니다.

profile
웹솔루션과

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

너무 좋은 글이네요. 공유해주셔서 감사합니다.

답글 달기