05-07 03:51
Notice
Recent Posts
Recent Comments
관리 메뉴

Scientific Computing & Data Science

[OpenCV] Windows / Visual Studio에서 OpenCV 개발환경 구축하기 본문

Programming/OpenCV

[OpenCV] Windows / Visual Studio에서 OpenCV 개발환경 구축하기

cinema4dr12 2014. 4. 2. 18:00

Written by Geol Choi | 


지난 글에서는 Mac OS의 IDE인 Xcode에서의 OpenCV 개발 환경 구축에 대하여 알아보았습니다. 이번 포스팅에서는 Windows의 IDE인 Xcode에서의 OpenCV 개발 환경 구축에 대하여 알아보도록 하겠습니다. 테스트 환경은 다음과 같습니다:

1. cmake 다운 및 설치

http://www.cmake.org/cmake/resources/software.html로부터 버전 2.4.8을 다운받습니다 ("opencv-2.4.8.exe"를 다운받습니다).

2. OpenCV 설치

다운받은 "opencv-2.4.8.exe"를 실행하여 설치할 디렉터리를 지정하고 설치합니다.

3. Visual Studio 솔루션 파일 생성

cmake를 이용하여 build 폴더와 Visual Studio 솔루션 파일을 생성합니다. OpenCV가 설치된 디렉터리를 보면 "build"와 "sources"의 2개의 폴더가 보일 것입니다. cmake를 실행하면 두 개의 디렉터리를 지정하는 곳이 보입니다.

"Where is the source code:"에는 "[opencv_path]\sources"를,

"Where to build the binaries:"에는 "[opencv_path]\build"의 위치를 지정합니다.


아래 "Configure" 버튼을 클릭하여 환경설정 옵션을 표시합니다. 이 버튼을 클릭하면 다음 그림과 같이 이 프로젝트에 대한 생성자(generator)를 선택하라는 메시지가 나오는데, "Visual Studio 12 Win64"를 선택합니다(또는 자신의 Visual Studio에 해당하는 버전을 선택합니다).


참고로, Visual Studio 2008은 버전 9, 2010은 버전 10, 2011은 버전 11, 2012는 버전 12입니다. 그리고, 네 가지 옵션인 나오는데 컴파일러를 따로 지정하지 않아도 되는 "Use default native compiler"를 선택하고 "Finish" 버튼을 클릭합니다. 이 과정이 완료되면 아래 그림과 같이 프로젝트 빌드 옵션이 나오는데 원하는 옵션을 잘 선택하도록 합니다.



"Configure" 버튼을 한 번 더 누르면 선택한 옵션으로 빌드 옵션 환경설정이 완료되고 빨간 배경이 하얗게 변합니다.


"Generate" 버튼을 클릭하면 해당 Visual Studio 버전의 솔루션 파일(OpenCV.sln) 및 관련 파일이 생성됩니다. 솔루션 파일을 더블클릭하여 실행하면 해당 버전의 Visual Studio로 연결되는데 OpenCV의 예제 프로젝트들이 Solution Explorer에 보일 것입니다.


이 솔루션이 OpenCV를 위한 환경설정을 갖추고 있으나 이 곳에서 프로젝트를 추가하는 것도 OpenCV 프로젝트를 시작하는 방법이 되겠으나, 향후 예제를 참고하는 정도로 활용하는 것을 권장합니다 - 이 솔루션 전체를 빌드하면 시간이 엄청나게 오래 소요됩니다.


cmake를 통해 솔루션을 생성하는 방법에 대해 다루었으나, 이것은 차후 예제를 활용할 수 있는 차원에서 다룬 것입니다. 이제 실제 프로젝트 생성 및 OpenCV를 사용할 수 있도록 직접 환경설정하는 방법에 대해 알아보도록 하겠습니다.

4. Visual Studio 2012 실행

Visual Studio 2012(버전 11)을 실행합니다. 다른 버전의 Visual Studio도 상관은 없습니다. 왜냐하면 환경설정하는 방법은 동일하기 때문입니다.

5. 프로젝트 생성

메뉴로부터 File > New > Project를 선택하여 새로운 프로젝트를 생성하는 창이 열리면 좌측 사이드바에서 Installed > Templates > Visual C++가 선택된 상태에서 Win32 Console Application을 선택합니다.


프로젝트 이름은 "opencv_test"로 하고, 원하는 위치에 프로젝트를 생성합니다.


Application Settings > Additional Options: > Empty Project를 체크합니다.


"Finish" 버튼을 클릭하여 프로젝트 생성을 완료합니다.

6. 프로젝트 속성 정의

Solution Explorer에서 방금 생성한 프로젝트(opencv_test)를 우측 마우스 클릭하고 속성(Properties)을 선택합니다.


아래 그림과 같이 opencv_test Property Pages 창이 열릴 것입니다.


"Configuration Manage..."를 클릭합니다.


"Active solution platform:"에서 <New...>를 클릭하고, "Type or select the new platform:"에서 x64를 선택합니다(만약 x86 빌드 아키텍쳐를 원한다면 이 과정을 생략합니다).


이제 헤더 파일 경로를 추가합니다. Configuration Properties > C/C++ > General에서 "Additional Include Directories"의 오른쪽 화살표를 클릭하고 <Edit...>를 클릭합니다.


Additional Include Directories 창이 열리면 폴더 아이콘을 클릭하고 "[opencv_path]\build\include" 폴더를 선택하고, OK를 클릭합니다.


이제 라이브러리 경로를 지정한다. Configuration Properties > Linker > General 에서 "Additional Library Directories"에서 화살표를 클릭하고 <Edit...>를 클릭한다.


Additional Library Directories 창이 열리면 폴더 아이콘을 클릭하고 라이브러리 경로를 "[opencv_path]\build\x64\vc12\lib"으로 지정하고 OK를 클릭합니다.


Configuration Properties > Linker > Input 에서 "Additional Dependencies"에서 화살표를 클릭하고 <Edit...>를 클릭합니다.


Additional Dependencies 창이 열리면 다음의 라이브러리 리스트를 복사해서 붙여넣고 OK를 클릭합니다:


version: 2.4.8.

opencv_calib3d248.lib
opencv_calib3d248d.lib
opencv_contrib248.lib
opencv_contrib248d.lib
opencv_core248.lib
opencv_core248d.lib
opencv_features2d248.lib
opencv_features2d248d.lib
opencv_flann248.lib
opencv_flann248d.lib
opencv_gpu248.lib
opencv_gpu248d.lib
opencv_highgui248.lib
opencv_highgui248d.lib
opencv_imgproc248.lib
opencv_imgproc248d.lib
opencv_legacy248.lib
opencv_legacy248d.lib
opencv_ml248.lib
opencv_ml248d.lib
opencv_nonfree248.lib
opencv_nonfree248d.lib
opencv_objdetect248.lib
opencv_objdetect248d.lib
opencv_ocl248.lib
opencv_ocl248d.lib
opencv_photo248.lib
opencv_photo248d.lib
opencv_stitching248.lib
opencv_stitching248d.lib
opencv_superres248.lib
opencv_superres248d.lib
opencv_ts248.lib
opencv_ts248d.lib
opencv_video248.lib
opencv_video248d.lib
opencv_videostab248.lib
opencv_videostab248d.lib


version: 2.4.9

opencv_calib3d249.lib
opencv_calib3d249d.lib
opencv_contrib249.lib
opencv_contrib249d.lib
opencv_core249.lib
opencv_core249d.lib
opencv_features2d249.lib
opencv_features2d249d.lib
opencv_flann249.lib
opencv_flann249d.lib
opencv_gpu249.lib
opencv_gpu249d.lib
opencv_highgui249.lib
opencv_highgui249d.lib
opencv_imgproc249.lib
opencv_imgproc249d.lib
opencv_legacy249.lib
opencv_legacy249d.lib
opencv_ml249.lib
opencv_ml249d.lib
opencv_nonfree249.lib
opencv_nonfree249d.lib
opencv_objdetect249.lib
opencv_objdetect249d.lib
opencv_ocl249.lib
opencv_ocl249d.lib
opencv_photo249.lib
opencv_photo249d.lib
opencv_stitching249.lib
opencv_stitching249d.lib
opencv_superres249.lib
opencv_superres249d.lib
opencv_ts249.lib
opencv_ts249d.lib
opencv_video249.lib
opencv_video249d.lib
opencv_videostab249.lib
opencv_videostab249d.lib


version: 2.4.11 / Debug

opencv_calib3d2411d.lib
opencv_contrib2411d.lib
opencv_core2411d.lib
opencv_features2d2411d.lib
opencv_flann2411d.lib
opencv_gpu2411d.lib
opencv_highgui2411d.lib
opencv_imgproc2411d.lib
opencv_legacy2411d.lib
opencv_ml2411d.lib
opencv_nonfree2411d.lib
opencv_objdetect2411d.lib
opencv_ocl2411d.lib
opencv_photo2411d.lib
opencv_stitching2411d.lib
opencv_superres2411d.lib
opencv_video2411d.lib
opencv_videostab2411d.lib


version: 2.4.11 / Release

opencv_calib3d2411.lib
opencv_contrib2411.lib
opencv_core2411.lib
opencv_features2d2411.lib
opencv_features2d2411.lib
opencv_flann2411.lib
opencv_gpu2411.lib
opencv_highgui2411.lib
opencv_imgproc2411.lib
opencv_legacy2411.lib
opencv_ml2411.lib
opencv_nonfree2411.lib
opencv_objdetect2411.lib
opencv_ocl2411.lib
opencv_photo2411.lib
opencv_stitching2411.lib
opencv_superres2411.lib
opencv_video2411.lib
opencv_videostab2411.lib


version: 3.0.0

opencv_calib3d300d.lib
opencv_core300d.lib
opencv_cuda300d.lib
opencv_cudaarithm300d.lib
opencv_cudabgsegm300d.lib
opencv_cudacodec300d.lib
opencv_cudafeatures2d300d.lib
opencv_cudafilters300d.lib
opencv_cudaimgproc300d.lib
opencv_cudalegacy300d.lib
opencv_cudaoptflow300d.lib
opencv_cudastereo300d.lib
opencv_cudawarping300d.lib
opencv_cudev300d.lib
opencv_features2d300d.lib
opencv_flann300d.lib
opencv_highgui300d.lib
opencv_imgcodecs300d.lib
opencv_imgproc300d.lib
opencv_ml300d.lib
opencv_objdetect300d.lib
opencv_photo300d.lib
opencv_shape300d.lib
opencv_stitching300d.lib
opencv_superres300d.lib
opencv_ts300d.lib
opencv_video300d.lib
opencv_videoio300d.lib
opencv_videostab300d.lib



이제 opencv_test Property Pages에서 확인을 클릭하여 창을 닫습니다.

7. 소스 파일 생성

Solution Explorer > opencv_test > Source Files > Add > New Item...을 우측 마우스를 클릭하여 Add New Item - opencv_test 창을 엽니다.


열린 창에서 Installed > Visual C++이 선택된 상태에서 C++ File(.cpp)을 선택하고 적당한 파일 이름을 지정합니다.

8. 테스트 코드 작성

다음과 같이 소스 코드를 작성하고 저장합니다:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <opencv2/opencv.hpp>
 
int main(int argc, char *argv[])
{
    // Open the file.
    IplImage *img = cvCreateImage(cvSize(50400), IPL_DEPTH_8U, 3);
 
    // Display the image.
    cvNamedWindow("Image:", CV_WINDOW_AUTOSIZE);
    cvShowImage("Image:", img);
 
    // Wait for the user to press a key in the GUI window.
    cvWaitKey(0);
 
    // Free the resources.
    cvDestroyWindow("Image:");
    cvReleaseImage(&img);
 
    return 0;
}
cs

9. 프로젝트 빌드

Solution Explorer > opencv_test를 우측 마우스 클릭하고 Build를 선택하여 프로젝트를 빌드합니다 (또는 단축키 Ctrl + Shift + B).


앞서 과정이 제대로 이루어졌다면 빌드가 성공될 것입니다.

10. 빌드된 실행파일 실행

Ctrl + F5를 눌러 실행파일을 실행하면 다음과 같은 에러 메시지가 출력될 것입니다.



이 에러 메시지가 출력되는 원인은 실행 시 런타임에서 링크되는 동적 링크 라이브러리(Dynamic Link Library, DLL)를 찾지 못했기 때문입니다.

11. 동적 링크 라이브러리 추가

[opencv_path]\build\x64\vc12\bin 디렉터리 내의 모든 *.dll 파일들을 복사하여 [project_path]\x64\debug 디렉터리로 복사합니다 (이 디렉터리 내에는 "opencv_test.exe" 실행파일이 존재할 것입니다).

12. 다시 실행파일 실행

다시 Visual Studio로 돌아와서 Ctrl + F5를 눌러 실행해 봅니다. 다음과 같은 창이 출력되며 테스트 프로젝트는 모두 완료되었습니다!



Comments