컴퓨터비전 마지막 프로젝트로 만들었던 숫자인식기.
단순히 웹캠으로 숫자를 비춰주면 어떤 숫자인지 판별해서 출력해주는 프로그램이다.
전체 프로그램은 Python을 이용해 구현했고, ctypes-opencv를 이용해 영상 처리 부분을 구현했으며, GUI는 PyQT를 이용해서 구현했다.
시간이 좀 부족해서 단순히 기본 템플릿 이미지(0~9)와 입력받은 영상의 일치하는 정도를 본 다음 가장 일치하는 정도가 높은 숫자를 출력해주는 방식으로 구현했는데, 비교 할 때 지표를 좀 더 추가한다면 적중률이나 폰트에 따른 편차 등이 줄어들지 않을까 싶다.
Python만 이용해서 구현했더니 속도가 너무 떨어져서(초당 1프레임도 안 나오는 듯) 픽셀 연산 부분은 따로 C++을 이용해서 구현 한 다음, DLL로 만들어서 Python에서 해당 함수들을 호출하는 방식으로 구현했다.

- 소스코드


- 발표자료
- 실행 가능한 버전(압축을 푼 뒤 NumberRecognizer.exe 파일을 실행)
Posted by RyuiSaka
- Description
 1. 얼굴이 포함된 2장의 컬러 이미지 파일을 열어서 얼굴 부분만 첫 번째, 두 번째 윈도우 창에 각각 보인다.
 2. 얼굴 영역에 모폴로지를 적용하여 노이즈를 제거한 후 세 번째, 네 번째 윈도우 창에 각각 보인다.
 3. 세 번째 얼굴에서 네 번째 얼굴로 서서히 변하는 이미지를 다섯 번째 윈도우 창에 보인다.


- Screen Shot

Source Image 1

Source Image2


Source Image에서 얼굴부분 윤곽만 따낸 Image


위에서 따낸 얼굴 Image에 Morphology를 적용해서 노이즈를 제거한 Image


실제로 Weighted Sum을 수행 한 뒤 생성된 Morphing Image


- Source Code

Posted by RyuiSaka

- Description

 1. 얼굴이 포함된 컬러 이미지 파일을 열어서 첫 번째 윈도우 창에 보인다.
 2. 컬러 이미지에서 얼굴 부분은 컬러로, 나머지 부분은 그레이로 하여 두 번째 창에 보인다.


- Screen Shot

원본 소스 이미지

컬러공간 변환(RGB to HSV)과 이미지연산, Threshold를 적용해서 얼굴부분 색만 추출한 이미지


- Source Code


- Visual Studio 6.0 Project File

Posted by RyuiSaka

- Description

 1. 이미지 파일을 열어서 첫 번째 윈도우 창에 보인다.
 2. 첫 번째 윈도우에서 마우스 클릭을 두 번하면 두 개의 마우스 커서 좌표를 각각 사각형의 왼쪽 위 좌표, 오른쪽 아래 좌표로 하여 사각형 영역을 설정하고, 이 영역의 이미지만 r, g, b 평균을 하여 두 번째 윈도우 창에 보인다.
 3. 이 때, 두 번째 창에는 선택된 영역의 크기만큼만 보여야 한다.


- Screen Shot



- Source Code



- Visual Studio 6.0 Project File


- 비교 : http://ryuisaka.com/334 (cvGetReal2D와 cvSetReal2D 함수를 사용한 버전)
Posted by RyuiSaka