상세 컨텐츠

본문 제목

손가락으로 소리 껐다 켰다하기(feat. 빵형)

인공지능

by 잘못된 선택 2022. 2. 4. 21:10

본문

웹캠을 구매한 기념으로 '손가락으로 볼륨을 껐다 켰다하는 프로그램'을 만들어 보았다.

영상을 처리하기 위한 opencv와 영상 영상 분석을 도와주는 mediapipe 라이브러리를 사용하였다.

mediapipe는 구글에서 비전인식과 관련된 다양한 머신러닝 모델을 쉽게 사용할수 있도록 제공하는 AI 프레임워크이다.

자세한 자료는 https://google.github.io/mediapipe/ 에서 확인할 수 있다.

mediapipe로 할 수 있는 작업들

환경 구성하면서 꽤나 고생을 했다.. 결과적으로 보니 mediapipe나 웹캠 연결하는 작업이 굉장히 간단한 작업이지만 혹시나 나와 같은 에러로 고생할 사람을 위해 정리해보았다.

 

1. mediapipe는 파이썬 버전에 영향을 많이 받기 때문에 설치할때 주의해야 한다.(나는 3.7.9 버전을 사용하였다.)

또한 conda환경을 사용한다면 반드시!! 64비트 conda를 사용해야한다.(32비트 conda에서는 mediapipe 설치 불가)

 

2. opencv로 웹캠 연결할때 에러

=> 권한 문제였는데, 권한 허용되어 있음에도 연결이 안되고 있었고 껐다가 키니까 연결되었다.. ㄷㄷ

 

 

 

이렇게 환경 세팅이 끝나고 mediapipe의 다양한 모델을 사용해보았다. mediapipe 홈페이지에 예제 코드가 나와있는데 매우 간단하여 정말 쉽게 사용할 수 있었다.

face detection, face mash, hands 동시 적용 결과

 

유튜버 빵형님께서 손가락 인식을 통해 볼륨(모터)를 제어하는 프로그램을 만드신 것을 보고 나는 무엇을 만들까 생각해보았다. 우선 나는 모터가 없기 때문에 키보드를 제어하여 볼륨을 조정하는 방법을 사용하기 위해 ctypes라는 라이브러리를 사용하였다. 현재 볼륨의 크기를 알 수 있는 방법을 찾지 못하여 소리를 껐다 켰다하는 방법을 생각했고 그 신호로 사람들이 흔히 조용하라는 제스쳐로 검지를 입에 가져다 대는 모양을 생각했다. 

 

결과 영상

검지의 끝과 입의 거리가 특정 기준값(threshold) 이하로 가까워지면 음소거가 이루어지도록 만들었다.

mediapipe가 실시간 영상 처리도 생각보다 깔끔하게 처리해주어서 만족스러운 결과물이 나올 수 있었다.

 

 

 

마지막으로 파이썬 파일을 실행파일로 변환하는 과정에서 mediapipe가 'FileNotFoundError: The path does not exist.'라는 오류와 함께 바로 꺼지는 문제가 발생한다. 이런 문제점을 깔끔하게 해결하는 방법으로 .spec파일에 경로를 설정해주는 방식을 사용했다. 해당 방법은 아래 사이트를 참고하였다.

https://python.tutorialink.com/issues-compiling-mediapipe-with-pyinstaller-on-macos/

해결 방법

 

관련글 더보기

댓글 영역