Mediapipe를 이용한 제스쳐인식

2021. 7. 14. 00:04Python AI

먼저 시작은 유튜브다 딥러닝,머신러닝을 공부하는 사람을 봤는데 너무 내취향의 유튜브였다

그 유튜브에서 Mediapipe를 이용해 개발하는 영상을 하나 봤는데 너무 재밌어 보여서 해보게되었다

 

공식홈페이지에 들어간뒤 설치를 하고 Solution카테고리에 Hand로 들어가서 openCV를 이용해 웹캡의 캡쳐 텍스쳐를 가져와 손을 인식하고, 손을 트레킹하는데까지는 성공했다

 

 

그 이후 이 손동작이 어떤제스쳐인지 판단하는 로직을 넣어야하는데 이 정보가 공식문서에 존재하지않는다

이때 좀 어질어질했는데 마음을 다잡고 다시 정보를 찾아보며 생각해봤는데 제스쳐인식을 너무 어렵게

생각안해도 되는 것이란 것을 깨달았다 그냥 각 손가락이 펴졌는지 접혔는지 상태로 제스쳐를

판단할 수 있었다너무 너무 간단한 솔루션이였다 바로 코드로 옮겼다 

이게 공식 홈페이지에 있는 사진인데

검지는 0번부터 8번까지의 길이가 0번부터 6번까지의 길이보다 짧으면 접힌걸로 판단

중지는 0번 -> 12번 길이가 0번 -> 10번 길이보다 짧으면 접힌걸로 판단

약지는 0번 -> 16번 길이가 0번 -> 14번 길이보다 짧으면 접힌걸로 판단

소지는 0번 -> 20번 길이가 0번 -> 18번 길이보다 짧으면 접힌걸로 판단

이게 엄지가 판단하기 좀 애매했다 다른 손가락같이 0번 -> 4번 길이가

0번 -> 3번 길이보다 짧은걸로 판단하면

무조건 엄지가 펴져있는걸로 인식됬다 인체구조상 4번까지 길이가

3번까지 길이보다 짧아질 수 가없기 때문이다

그래서 나는 0번 -> 4번 길이와 0번 -> 18번 길이를 비교해 판단하기로 했다

결과물이 제법 깔끔하게 나왔다 그리고 길이 구하는 데에는 점과 점사이의 거리공식을 썼다

 

이렇게 판단하고, 제스쳐의 데이터를 넣어서

이렇게 완성됬다

전체 소스코드다

새로운 제스쳐를 추가하고 싶으면 gesture배열에

각각 엄지,검지,중지,약지,소지,제스쳐이름 순으로 추가하면된다

 

이다음으로 할거는 제스쳐를 이용해 컴퓨터의 볼륨을 조절하는 것이고

최종목표는 수화번역AI를 만드는 것이다

꾸준히 해보도록하자

'Python AI' 카테고리의 다른 글

Mediapipe를 이용한 수화번역AI  (88) 2021.07.15
Mediapipe를 이용한 제스쳐로 볼륨조절  (5) 2021.07.14