MediaPipe는 인체나 물체를 대상으로 하는 영상 인식 기능을 AI 모델 개발과 머신러닝을 통해 라이브러리, 패키지 형태로 제공하는 프레임워크입니다. 손 인식과 같은 기능을 제공하는 패키지들을 포함하고 있습니다.
OpenCV는 영상 처리를 위한 대표적인 오픈 소스 라이브러리로, 카메라 데이터를 읽고 영상 반전, 색공간 변경 등 다양한 영상 처리 기능을 제공합니다.
sys 모듈은 파이썬 인터프리터와 상호작용할 수 있는 함수들을 제공합니다.
hand.py
는 손 인식에 관련된 기능을 구현한 모듈입니다. 이 모듈은 OpenCV 라이브러리와 sys 모듈, 그리고 MediaPipe 패키지를 import하여 사용합니다. cap.read()
함수를 사용하여 카메라 데이터를 읽고, cv2.flip()
함수를 사용하여 영상을 반전시키며, cv2.cvtColor()
함수를 사용하여 색공간을 변경합니다. 또한, multi_hand_landmarks
변수는 손의 주요 부분에 대한 x, y, z 좌표 정보를 리스트 형태로 담고 있습니다.
fingertop.py
는 관절 사이의 위치를 계산하여 손가락이 펴졌는지 접혔는지를 구분하는 기능을 구현한 모듈입니다. 이 모듈에서는 math
모듈을 import하여 수학과 관련된 함수와 변수들을 사용합니다. math.dist()
함수는 두 점 사이의 거리를 구하는 함수이며, distance()
함수는 두 랜드마크 좌표 사이의 거리를 구하는 함수입니다. cv2.putText()
함수를 사용하여 손가락이 접혔으면 0, 폈으면 1을 이미지에 표시하고, mp.drawing.draw_landmarks()
함수는 파라미터로 지정된 이미지와 인식된 정보, 그리는 방법을 받아들여 그림을 그리는 기능을 수행합니다. mp_drawing_styles
는 그리는 색상과 크기를 지정하는 변수들을 담고 있습니다.
너무 좋은 글이네요. 공유해주셔서 감사합니다.