rps.py
는 손 모양 인식 프로그램으로, 손가락이 펴졌는지 접혔는지를 확인하여 손 모양을 인식하는 기능을 구현한 파일입니다.
distance()
: 두 개의 랜드마크 좌표 사이의 거리를 구하는 함수입니다.
손 인식을 위해 MediaPipe 패키지의 기능들을 사용합니다. 비디오 캡쳐 객체를 생성하고 연결을 확인한 뒤, 손을 인식하는 객체를 생성하여 hand
라는 변수에 할당합니다.
while
문으로 블록 안의 코드를 반복합니다. cap.read()
함수를 사용하여 카메라 데이터를 읽고 정상적으로 읽었는지 확인합니다. 영상을 반전시키고 RGB 색공간으로 변경한 뒤, 손 인식을 진행합니다.
인식된 손가락들의 좌표 정보를 points
변수로 확인하여 손가락이 펴졌는지 확인합니다. fingers
변수는 펴진 손가락의 개수를 세는 변수입니다.
엄지손가락이 폈다면 fingers
변수에 1을 더하고, 나머지 손가락들도 반복문을 통해 확인합니다. 그 다음 펴진 손가락의 개수를 확인하여 hand_shape
에 알맞은 문자열을 대입합니다.
cv2.imshow()
함수를 사용하여 영상을 화면에 출력하고, 키보드의 입력을 받아 esc
키를 누르면 반복문을 종료합니다.
thumbs_up_ok.py
는 rps.py
와 비슷한 기능으로, 엄지손가락과 OK 손 모양을 인식하는 프로그램입니다. 중복되는 부분은 생략되었고, 손가락의 펴진 정도를 확인하여 엄지손가락이 폈을 때는 "thumbs up"을, 엄지와 검지가 닿아있고 나머지 손가락이 펴져 있을 때는 "OK"를 hand_shape
에 대입하는 기능을 구현하고 있습니다. cv2.putText()
함수를 사용하여 frame
이미지에 hand_shape
값이 씌워집니다.
항상 좋은 글 감사합니다.