프로그래밍/영상처리

01. 기본환경 구성 - 영상처리 프로그래밍을 위한

산을좋아한라쯔 2017. 10. 8. 11:41
반응형

2000년 정도에 처음 영상처리 프로그래밍을 배울 때, 교수님은 Visual C++을 가지고 강의를 했었고, 나는 Java를 가지고 프로그래밍을 했다. (그 때 한참 Java에 빠져 있을 때여서, 모든 프로그래밍을 java로 했었다.)


이제 2017년에, Homomorphic Encryption 알고리즘으로 암호화된 상태의 지문 데이터에 대해 매칭을 해보고자 하려니, 다시 영상처리를 해야겠고(다 잊었다...ㅠ), 또한 C++을 이용해서 할 수밖에 없는 처지에 놓였다. (속도 땜에)


영상처리 기초부터 좀 봐야겠고, 해서 고른 책이 '열혈강의 - 영상 처리 프로그래밍'. 

알고리즘 뿐만 아니라, 오랫만에 Visual Studio를 다뤄야 하는 나 같은 사람을 위해서인지, Visual Studio의 사용법, 잊었던 C++문법도 잘 설명해 주고 있다.


일단, 이 책을 추석 연휴를 이용해서 3~4일 봐서 끝냈고, 이 책에 소개된 이미미 처리용 기본 클래스들을 향후 테스트할 지문매칭 프로그래밍에 이용하기로 한다. 그리고, 내용 잊기전에 간단히 요약해 둔다.


목차

1. Visual Studio 설치

2. 열혈강의 책에서 소개된 소스코드 내려받기

3. Dialog를 이용한 이미지 출력


1. Visual Studio 설치

Visual Studio 2017 Community버전을 설치했다. 책에서는 Visual Studio 2012를 사용했는데, 2017로도 무방


- Visual Studio 2017을 설치하면, 'MFC 응용 프로그램'용 프로젝트 만들기가 디폴트로 설치 안되어 있다. 이것은 추가로 설치해야 한다.
  --> 파일메뉴-새로만들기-프로젝트 를 한 후, 왼쪽 하단부에 보면 "Visual Studio 설치관리자 열기" 있다. 클릭하고선, '개별 구성요소' 탭을 선택한 후, 'SDK, 라이브러리 및 프레임 워크' 부분에 있는 'MFC 및 ALT 지원(x86 및 x64)'를 선택한 후 우측 하단부 '수정'버튼 클릭 

- 그냥 C++코드만을 보는 용도로는 Visual Studio Code를 이용하고 있다. 탐색기에서 소스파일을 더블 클릭해서 읽을 때는, 굳이 무거운 Visual Studio를 사용하는 것보다, Editor역할만 하는 Visual Studio Code가 더 간편


2. 열혈강의 책에서 소개된 소스코드 내려받기

- 여기서 받을 수 있다. : www.freelec.co.kr - e카탈로그 - 도서 자료실

  http://freelec.co.kr/bbs/read.asp?BBSName=BOOKPDS&page=1&id=206373

   --> 밑에 나오는 예제만 돌려보려면, 여기에 있는 것 모두 다운받지 않고, 아래 쪽 글에서 언급된 파일들만 다운받으면 된다.

- 소스를 받으면 여러 프로젝트에 대한 소스가 있는데, 여기서 필요한 파일들만 압축파일로 만들었다.

   (8_ColorEditor 프로젝트에 있는 imageSrc폴더내 파일들을 압축한 것임)

imageSrc.zip

 


3. Dialog를 이용해서, 이미지 출력해 보기

1)Visual Studio에서 프로젝트 만들기

- 파일메뉴 - 새로만들기 - 프로젝트에서, 아래 내용 입력 후 '확인'버튼 클릭

. 종류: MFC 응용 프로그램 

. 이름: HelloImage

- '다음' 누른 후, '응용 프로그램 종류'에서 "대화상자 기반" 선택하고, '마침' 클릭

- 솔루션탐색기에서 'HelloImage'프로젝트 선택하고 우클릭 - 속성 - 일반 - 문자집합 : '멀티바이트 문자 집합' 으로 선택

  --> 이렇게 하지 않으면, 컴파일할 때 문자처리하는 곳에서 에러 발생함

2)영상처리용 라이브러리 파일 추가

- 탐색기에서, 위에서 만든 프로젝트가 있는 폴더로 이동 : ...source/repos/HelloImage/HelloImage

- imageSrc 폴더 생성: ...source/repos/HelloImage/HelloImage/imageSrc

- 다음 파일들을 imageSrc폴더에 paste (이 파일들은 위쪽에 있는 imageSrc.zip 안에 있다)

  ImageFrameWnd.cpp

  ImageFrameWnd.h

  ImageFrameWndManager.cpp

  ImageFrameWndManager.h

  ImageView.cpp

  ImageView.h

  LoadImageFromFileDialog.cpp 

  LoadImageFromFileDialog.h

  MyImage.h


3)영상처리용 라이브러리를 프로젝트에 추가

- Visual Studio의 '솔루션 탐색기'에서, 'HelloImage' 프로젝트 선택하고 마우스 우클릭 - 추가 - 새 필터
  --> imageSrc 타이핑해서 새필터 생성

- imageSrc선택 후 마우스 우클릭 - 추가 - 기존 항목 : imageSrc폴더 밑에 있는 9개 파일 모두 선택 후 '추가'버튼 클릭

==> 이 처럼, 영상처리에 사용할 라이브러리를 imageSrc폴더에 넣고, 실제 코드에서는 헤더파일만 include한 후, 사용할 것임


4)다이얼로그에 이미지파일 읽어오기용 버튼 생성

-HelloImage 다이얼로그에다가 '영상 입력'버튼 생성: 도구상자에서 '버튼' 선택 후, 다이얼로그 화면의 적당한 위치에 버튼 생성

- 버튼에 대한 속성 수정

. Caption: 영상 불러오기

. ID: IDC_BUTTON_LOAD_IMAGE

- 버튼클릭에 대한 이벤트 함수 만들기: '영상 불러오기' 버튼을 더블 클릭 

   --> HelloImageDlg 클래스에, void CHelloImageDlg::OnBnClickedButtonLoadImage() 생성됨. 

- HelloImageDlg파일의 상단부에, 이미지로드용 라이브러리 사용 위한 헤더파일 include 구문 추가

   #include "imageSrc\LoadImageFromFileDialog.h"

   #include "imageSrc\ImageFrameWndManager.h"

void CHelloImageDlg::OnBnClickedButtonLoadImage() 함수를 아래와 같이 코딩


메서드 생성 됨. 이 메서드를 아래와 같이 코딩

void CHelloImageDlg::OnBnClickedButtonLoadImage()

{

         CByteImage image = LoadImageFromDialog(); //LoadImageFromFileDialog.h

        

         if (image.IsEmpty()) return;

         ShowImage(image, "Hello~"); //ImageFrameWndManager.h

}


프로그램을 실행시켜서 '영상 불러오기' 버튼을 눌러 이미지 파일을 선택하면, 새로운 윈도우가 뜨면서 영상 출력될 것임

  

<Reference>

1. 이희석, 2013, 열혈강의-기초 알고리즘부터 라이브러리 활용까지-영상 처리 프로그래밍, 프리렉


<Download>

























- 끝-  


imageSrc.zip
0.01MB
반응형