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
- Today
- Yesterday