2011/11/09

Visual C++ 2005 에서 OpenCV 2.3.1 버전 사용하기

현재 배포되는 최신 버전의 OpenCV 2.3.1은 Visual C++ 2008과 2010 버전에 대해서만 바이너리 빌드를 제공 하고 있다.

2005에서 사용을 하려면 Visual C++ 2008 버전을 사용하거나 2005 버전으로 직접 컴파일 해야 한다.

직접 컴파일 하는 방법은 어렵지 않으며 아래 글을 참고하여 만들면 된다.



2010/10/17 - [Dev Story] - OpenCV 2.1 + TBB 를 Visual Studio 2010 에서 컴파일하기



먼저 OpenCV 2.3.1 버전을 테스트하기 위해 MFC Dialog 기반 프로젝트를 만들고 프로젝트 폴더에 OpenCV 2.3.1 패키지 않에 포함되어 있는 include 폴더(\build\include)와 직접 만든 lib 파일 또는 패키지 안에 있는 Visual C++ 2008 버전 용 라이브러리 파일(\build\x86\vc9\lib)들을 Project의 opencv 폴더에 복사해 아래 이미지와 같은 구조로 만들 었다.



마지막으로 프로젝트 루트 폴더에 패키지에 포함되어 있는 (\build\x86\vc9\bin) DLL 파일 이나 직접 만든 DLL 파일들을 복사해 둔다.



opencv_calib3d231.dll


opencv_contrib231.dll


opencv_core231.dll


opencv_features2d231.dll


opencv_ffmpeg.dll


opencv_flann231.dll


opencv_gpu231.dll


opencv_highgui231.dll


opencv_imgproc231.dll


opencv_legacy231.dll


opencv_ml231.dll


opencv_objdetect231.dll


opencv_ts231.dll


opencv_video231.dll


윈도우 시스템 경로에 두는 것도 한 방법이지만 프로그램을 배포하거나 프로젝트를 이리저리 옮기는 겨우 다시 복사를 해야하는 불편함이 있는 기본적으로 프로젝트 경로에 두고 사용한다.



디버그용 라이브러리와 DLL을 사용할 경우 메모리 누수 문제가 있어 테스트 프로젝트에는 릴리즈용만 사용하였다.

Debug 모드와 Release 모두 동일하게 아래와 같이 설정을 한다.



먼저  추가 포함 디릭토리에 프로젝트 하위로 복사한 include 폴더(.\opencv\include)를 지정한다.



그리고 링커 메뉴에서 추가 포함 라이브러리 폴더 역시 라이브러리를 복사해 둔 경로(.\opencv\lib)를 지정한다.



그리고 추가 라이브러리 파일 목록에 아래 파일들을 입력 한다.



opencv_calib3d231.lib


opencv_contrib231.lib


opencv_core231.lib


opencv_features2d231.lib


opencv_flann231.lib


opencv_gpu231.lib


opencv_haartraining_engine.lib


opencv_highgui231.lib


opencv_imgproc231.lib


opencv_legacy231.lib


opencv_ml231.lib


opencv_objdetect231.lib


opencv_ts231.lib


opencv_video231.lib




처음부터 모든 파일이 필요한 것은 아니고 필요한 기능에 따라 사용하지 않는 파일들도 있지만 모든 기능을 테스트해 보기 위해서는 모두 입력을 해 두는 것이 좋을 것 같다.



프로젝트 설정은 모두 끝났고 아래 코드는 간단하게 OpenCV 2.3.1 버전을 사용하는 예이다.

// stdafx.h
// For OpenCV
#include "opencv/cv.h"
#include "opencv/highgui.h"


void COpenCV231TestDlg::OnBnClickedButtonLoadImage()
{
CFileDialog dlgFile(TRUE);

if ( dlgFile.DoModal() == IDOK )
{
CStringA strFile = CStringA(dlgFile.GetPathName());

IplImage* pIplImage = cvLoadImage( strFile );

cvNamedWindow( "Image" );
cvShowImage( "Image", pIplImage );

cvReleaseImage( &pIplImage );
}
}





프로젝트를 실행하고 메인 다이얼로그의 버튼을 누르면 이미지 선택 대화상자가 활성화 되고 이미지를 선택하면 화면에 보여준다.

<

Original Post : http://neodreamer-dev.tistory.com/613

No comments :

Post a Comment