본문 바로가기

Projects/Face Control

이렇게 쉬운 거였는데!

요즘 정보올림피아드 공모를 준비하느라 바쁜 저에게 발목을 잡던 문제가 풀렸습니다.
아 그전에 이 카테고리를 설명하자면, 제가 이번년도 6~8월즈음에 있는[왜 이렇게 기간이!! 제가 대회 일정을 잘 모릅니다:)] 정보올림피아드 공모에 나가려고 하는데요, 지금 거기에 나가기 위해 만들고 있는 프로그램이 Face Control(가명)입니다. 하는일은 화상 & 음성인식을 담은 프로그램입니다. 윈도우에서만 돌아가구요...(나중에 기회가 된다면 리눅스용으로도 만들고 싶습니다)

제가 이 프로그램을 만들면서 얻은 정보를, 조금씩 여러분과 공유해보고자, 이 카테고리를 만들게 되었습니다 :) 자주는 올리진 못하겠지만(워낙 핵심자료라) 그냥 알고리즘 같은건 올릴수 있을테니 말이죠 :)

다름이 아니라, 얼굴을 인식해서 해야하는데, 그 인식하는 부분을 그동안 제가 복잡하게 생각을 해서 인지 몰라도 50라인이 넘었습니다. 인식해서 행동을 수행하게 하는 코드는 만드는데요...

하지만, 어제 학원에서 오자마자 기절해서 오늘 0시 30분에 일어나서 지금까지 한 것은... 정말 어이가 없습니다. 그 50줄이 넘던 소스 코드가 단 5줄로 끝나다니 말이죠 :)

이래서 프로그래밍에 매력에 푹 빠지는 것 같습니다. 하면할수록 뭔가 신비로운 소용돌이에 빠져들어가는듯한! 그래서 프로그래밍을 하는 동안에는 아무 생각도 안납니다. 오직 이 프로그램을 꼭 만들고야 말겠다는 그런 생각 하나로![언제부터그랬는가!!]

경쟁자도 있고 하니[응?] 최대한 제 작품에 대한 이야기를 자제하면서 하고 있지만, 정말 대단한거 같습니다.

사용자 삽입 이미지
이 그림은 제가 하고 있는 프로그램에서 쓰이고는 있습니다만, 위와 같진 않습니다 :)
어쨌든! 여기에서 보면 제가 하고자 했던 것은, 저 하얀색 사각형이 가장 큰 밖의 사갹형[무슨 뜻인지 아셨죠?;;]의 변과 가장 가까운 쪽으로 갈 때, 제가 띄운 이미지가 그쪽 방향으로 간다는 것이죠. 대각선도 됩니다. 즉, 위의 그림에서 보면 오른쪽 아래로 더 가까우니까, 움직이려는 이미지도 그 가까운 방향으로 가게한다는거죠![하던 얘기를 계속하는 듯한 무한루프같은 느낌]

큰 사각형의 위쪽 변과 하얀 사각형의 위쪽부분을 수직으로 연결한 노란색 선을 T_Height라 놓고, 아랫쪽도 마찬가지로 노란색 선을 B_Height, 양 옆에 두 노란색 선을 L_Width, R_Width라고 놓았을 때, 이미지를 원하는 방향으로 움직이게 하려면,

Image1->Left = Image1->Left + L_Width - R_Width;
Image1->Top = Image1->Top + T_Height - B_Height;

로 하는 것입니다! 이렇게 하면 부드럽게 움직이겠죠... 이제 제가 새벽동안 한 짓거리입니다-_-;

그전에 했던 방법은, 저 큰 사각형을 9개의 영역으로 쪼개서, 그 영역안에 흰 사각형이 들어가면, 그 방향으로 움직이는 거였죠... 8방향으로 너무 딱딱하게 움직이고, 인식률도 낮아서, 고민을 했었습니다만, 지금은 상황이 훨씬 나아졌군요 :)

이상 지루한 프로그래밍 얘기였습니다