Skip to content
KwonJH edited this page Nov 22, 2016 · 3 revisions

#2016년 11월 20일 일요일 ##개발 환경 구축 금요일에서 부터 지금까지 한성 보스몬스터 lv64 노트북에서 Cent OS를 설치하고 OpenCV를 설치했다. 그러나 웹캠이 작동을 하지 않았다. 아니, 인식을 하지 못했다. 결국 밤새 끙끙거리다가 결국 학교 삼성 노트북9으로 우분투 설치 후, OpenCV설치 그리고 웹캠 인식까지 깔끔하게 20분으로 설치 완료. 이틀동안의 노력이 날라갔지만 그래도 성공!! C++ Qt를 사용해 미리 구상했던 UI 대로 개발을 했다. Qt는 C++에서도 사용할 수 있을 뿐만 아니라 다른 언어들에서도 사용할 수 있는 프레임워크인데 Qt는 UI를 구성할 때 안드로이드나, C#처럼 위젯들을 드래그해 UI를 만들 수 있어서 Qt를 선택했다.

##오늘 한 일 지금 시간이 많이 늦고, Qt를 처음 사용해보는 지라 간단히 문법도 익히고 어떻게 사용하는지 익히느라 창에 실시간 웹캠을 띄우는 것까지 완료했다. 그리고 노랑색이 생각나서 노랑색을 가지고 있는 구체를 인식하도록 개발을 했다. 가우시안 필터를 적용시켜 잡음을 없애고 거기서 inRange() 함수를 이용해 일정 노랑색?을 띄는 화소들을 검출해서 거기서 구체를 추적하는 식으로 개발했고 추적하는 구체의 x, y 좌표를 출력시키고 반지름까지 출력하도록 개발을 했다.

##내일 해야 할 일 우선 기능 하나를 만들었다. 내일은 손 끝 인식 기능을 넣을 것이다. 오늘은 다행히 막히는 부분없이 술술 넘어가서 좋았다. 그리고 보스몬스터lv64에서 윈도우에서 Tracker를 만들었을 때는 웹캠 성능 문제인지 화면의 정 가운데를 이상하게 인식?하는 부분이 있었는데 이 삼성 노트북9에서 우분투에서 사용해보니 정석대로 구동되서 구체 추적이 문제없이 잘 됐다.

#2016년 11월 21일 월요일 ##오늘 한 일 오늘은 황인종의 피부색을 가진 화소들을 검출하고 그 화소들에 대해서 Convex Hull이라는 알고리즘을 적용시켰다. 이 알고리즘은 모아놓은 점들 중에 깊은 각?을 가지는 픽셀들을 찾는 것이다. 나는 깊은 각을 가지는 픽셀들을 찾아서 std::atan2라는 것을 이용해 각도를 구하고 일정 각도를 넘는다면 손가락 사이라고 생각해 그 부분을 이어서 손을 인식시켰다. 또한, 거기서 손을 이을 때 시작하는 부분, 즉 손 끝에 원을 그려 손 끝을 잘 보이도록 해놓았다.

이제 각종 필터들을 적용시켰는데 침식, 팽창 작용과 가우시안 필터, 그레이 필터를 적용시켰다. 침식, 팽창 작용에 대해서 처음에 직접 알고리즘을 구현했는데 이상하게 웹캠의 절반만 바뀌게 되어서 그냥 OpenCV에서 제공하는 함수를 사용했다. 이로써 완성! 이틀동안 밤새서 코드 1000줄 정도 짠 것 같다ㅠㅠㅠ

##내일 해야 할 일 잠자기

Clone this wiki locally