Loading
2015.04.13 15:35 - citybell.com

OpenCV Visual Studio 2013 Express 설정하기

1. 환경변수 설정

OpenCV 를 org 에서 다운로드 받은 후 실행하여  C:\OpenCV2.4.11 라는 폴더에 풀어 놓은 상태에서 설정 하는것으로 여기서 부터  시작한다.

시스템 속성 > 환경 변수 설정

 

 

환경 변수 버튼을 클릭 하면 아래와 같은 화면

 

시스템 변수(S)에 새로 만들기를 해서 OPENCV_DIR 을 OpenCV를 설치한 디렉토리로 설정 해준다.

 

C:\OpenCV2.4.11\opencv\build\x64\vc12

Visual Studio 2013의 경우 최종 폴더가 vc12 가 된다.

 

이제는 DLL등의 실행파일의 Path를 시스템에서 찾을 수 있도록 OpenCV Path를 추가한다.

 

시스템변수 편집(I) 버튼을 눌러 맨뒤에 %OPENCV_DIR%\bin 을 추가한다

 

 

2. Visual Studio 2013 설정

이제는 비주얼스튜디오 2013에 설정을 한다.

 

요즘의 Visual Studio는 전역으로 설정하는 부분이 없고, 프로젝트 마다  환경변수를 설정 하는 방향으로 변경되어 매번 프로젝트를 생성 할 때마다 설정을 해 주어야 한다.

 

여기에서는 무료버전인 Visual Studio Express 2013 for Windows Desktop 을 기준으로 한다

 

Visual C++ 템플릿에서 Win32 콘솔 응용 프로그램 을 선택

 

확인 후 마법사에서 기본 설정 그대로 마침을 누른다.

 

 

이제 프로젝트가 하나 만들어 졌고 아래와 같은 모습의 기본소스가 보일 것임.

 

 

오른쪽 솔루션 탐색기에서 새로 만든 프로젝트인  ‘ObjectR’ 선택 후 마우스를 우클릭 하면 프로젝트의 속성페이지로 들어간다.

 

 

1) x64 플랫폼 을 위한 설정

처음부터 64bit용 프로젝트를  위해 시스템변수에 설정 하였음으로 비주얼스튜디오 프로젝트에 x64 빌드 환경을 세팅 한다.

 

C/C++ 속성 선택 상태에서 우측상단 구성 관리자 클릭 

 

플랫폼에서 <새로 만들기> 를 선택하면 x64 플랫폼이 아래 처럼 보인다 –> 확인

 

 

이제 x64 프로젝트를 빌드 할 준비가 되었다

 

 

 

2) Compiler 및 Linker 를 위한 Path 설정

속성페이지에서  플랫폼이 x64 로 되어 있는지 확인하고 여기에 컴파일시 필요한 각종  include 나 lib 의 path를 설정 해준다.

 

 

[ include path setup]

C/C++ 구성에서 ‘추가 포함 디렉터리’ 를 선택한다.

include 를 한글로 번역 해서 ‘포함 디렉터리’ 라는 말이 나왔다

<편집..> 이라는 탭을 선택함.

C:\OpenCV2.4.11\opencv\build\include 이렇게 써도 되지만

C:\OpenCV2.4.11\opencv\build\x64\vc12 == 시스템변수 $(OPENCV_DIR) 임으로

$(OPENCV_DIR)\..\..\include 라고 적어준다

 

 

[lib path setup]

라이브러리 패스 설정은 링커에서 ‘추가 라이브러리 디렉터리’

 

 

linker 를 한글로 ‘링커’라 표시해서 눈에는 잘 띄지는 않지만..

같은 방법으로 $(OPENCV_DIR)\lib  로 적어준다.

(주의) 플랫폼이  Win32 가 아님 x64인 상태이어야 함.

 

 

2. 빌드 해보기

 

간단한 테스트용 코드를 아래처럼 적어본다
#include "stdafx.h"
#include <opencv\cv.h>
#include <opencv\highgui.h>


int _tmain(int argc, _TCHAR* argv[])
{
   
    IplImage *image = cvLoadImage("c:\\abc.jpg");

    cvShowImage("abc", image);

    cvWaitKey(0);

    cvReleaseImage(&image);
}

 

간단한 루틴을 적어 넣고 빌드를 하면 fopen 등 C runtime루틴에서 thread safe 어쩌고 .. 안전하지 않다는 에러가 나온다.  “This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS”

 

 

이때  _CRT_SECURE_NO_WARNINGS 를 프로젝트 속성에서 C/C++설정  Preprocessor(전처리기)에 무시하도록 설정 하면 된다.

_CRT_SECURE_NO_WARNINGS  를 맨끝에 추가.

 

이렇게 하면 _CRT_SECURE_NO_WARNINGS 어쩌구.. 에러가 없어진다.

 

하지만 이제는 또 다른 오류가 나온다

NK2019: cvShowImage 외부 기호(참조 위치: wmain 함수)에서 확인하지 못했습니다

LNK2019: cvLoadImage 외부 기호(참조 위치: wmain 함수)에서 확인하지 못했습니다.

 

이것은 라이브러리를 명시적으로 적어주지 않았기 때문에 링커가 링크를 못해서 나오는 오류로, 필요한 해당 lib 들을 적어 주면 된다.

 

 

예를 들면 함수 cvLoadImage(), cvShowImage(), cvWaitKey() 의 경우  opencv_highgui2411.lib 이 필요하다.

디버그 버전일 경우는 opencv_highgui2411d.lib

또한 cvReleaseImage()는 opencv_core2411.lib

이 필요함으로  아래 2개의 라이브러리를 적어주면 된다

링커 속성에서 입력(input)의 ‘추가종속성’ 을 클릭

 

opencv_highgui2411d.lib
opencv_core2411d.lib

 

이 두개의 lib이면 위의 샘플코드는 잘 동작한다 .

 

매번 해당하는 lib파일을 적어 넣기 귀찮으면

C:\OpenCV2.4.11\opencv\build\x64\vc12\lib 밑에 있는 lib 파일들을 d 붙은 것은 디버그 환경에 몽땅 적어 넣으면 된다.

릴리즈시에는 쓰인 lib 만 적어 넣는 것이 좋지 않을까 하는 생각..

 

커맨드 창에서 도스 명령어주면 간단히 debug lib 목록을 만들 수 있다

C:\OpenCV2.4.11\opencv\build\x64\vc12\lib>dir /b *d.lib
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_ts2411d.lib
opencv_video2411d.lib
opencv_videostab2411d.lib

 

Copy & paste 할 것

 

이제 Visual Studio 2013 으로 OpenCV 2.4.11 환경설정 및 샘플 컴파일 완료.

 

샘플 코드의  실행화면.

 

관련글:
XCode OpenCV 3.0 프로그램 작성 OS X Application
자연산홍합 양식홍합과는확실히 다른 홍합

 

 

  • Total 5,100,499
  • Today 215
  • Yesterday 694
  • Total 5,100,499
  • Today 215
  • Yesterday 694