Visual studio에서 openCV 라이브러리 초간단 설정 방법

 
 
Introduction

지난 포스팅에서는 openCV 라이브리 설정과 관련하여 Windows 시스템 환경 변수에 등록 후, 변경하는 툴에 대해 포스팅을 하였습니다. 그리고 변경하는 툴에 맞춰 개발을 시작할 수 있습니다. 하지만, openCV Library버전이 업데이트됨으로 인해, library/DLL 파일추가를 일일이 변경해야하는 문제가 있습니다. 이에 대해, 간단하게 visual studio에서 설정할 수 있는 방법을 알아보도록 하겠습니다. 
 
먼저 블로그 포스팅을 보기 전 이전 포스팅 "openCV 라이브러리 버전설정 전환 툴" 참고하시기 바랍니다. 같이사용해야 하는 SW입니다. 
 

 

 

 
openCV Library Directory Analysis 사용법

 
 

 

 
툴 사용방법은 간단합니다. 대신 이전 포스팅("openCV 라이브러리 버전설정 전환 툴")을 참고하여 폴더 구성을 변경해주셔야 합니다.  폴더 구성이 맞지 않을 경우, 제대로 빌드가 되지 않으니 참고 바랍니다. 
 
툴을 실행 시킨 후, "폴더 선택" 으로 openCV Library 폴더의 최상단을 선택합니다.  그럼 아래와 같은 결과를 확인 할 수 있습니다. 
 
현재 SW에서는 지정한 path가 에디터 박스에 나타나게 됩니다. 그리고 SW를 실행 폴더에 "openCVheader"의 새로운 폴더가 생성됩니다. 
 
 
 
꽤 많이 생성되었죠? 가지고 있는 Library 파일이 많다보니 저렇게 생성되었지만, 버전을 다양하게 쓰시는 분이아니라면, 간소하게 나타나게 됩니다. 생성되는 파일의 구조는 2종류로서 다음과 같습니다. 
 
  • HeaderList.h
  • opencvXXX.h (폴더명과 동일하게 생성됨)
 
HeaderList.h파일은 다음과 같이 구성되어있습니다. 가장 먼저 보유하고 있는 openCV 라이브러리의 버전에 따라 Define을 설정 합니다. 그리고 동일하게 #include 구문을 통해 헤더파일을 추가합니다. 
 
// HeaderName List by http://www.vbflash.net

#define OPENCV2404
#define OPENCV2406
#define OPENCV2406CUDA50X86
// 생략 ...
#define OPENCV4400CUDA101X64EXTRAR001
#define OPENCV4400CUDA101X64EXTRAR002
#define OPENCV4400CUDA101X64EXTRAR003
#define OPENCV4500CUDA102X64EXTRA

#include "opencv2404.h"
#include "opencv2406.h"
#include "opencv2406cuda50x86.h"
// 생략 ...
#include "openCV4400cuda101x64ExtraR001.h"
#include "openCV4400cuda101x64ExtraR002.h"
#include "openCV4400cuda101x64ExtraR003.h"
#include "openCV4500cuda102x64Extra.h"
 
이후, Visual Studio에 추가하여 사용할 때, Define 부분은 사용하는 부분을 제외하고 다음과 같이 주석처리하셔야 합니다. 
 
이제 헤더파일에서 사용하고자하는 openCV Library 버전을 교체하기위해서는 주석처리만 이용하여 사용가능합니다. 참 쉽죠? 그럼 남은 셋팅 부분을 살펴보도록 하겠습니다. 
 

 

 

 
Visual Studio Setting

 
Visual Studio에서의 구성은 상위 그림과 같습니다. 헤더파일이 조금 많이 있긴하지만, 보시는 분들은 필요에 따라 사용하실테니, 걱정하지 않겠습니다. :)
 
그럼 소스코드를 알아보도록 하겠습니다. 
 
 
#pragma once
#pragma warning(disable: 4819)
#include <opencv2/opencv.hpp>

#define OPEPCV_LIB_PREFIX   "opencv_"

#ifdef _DEBUG
#define OPENCV_LIB_POSTFIX  "d.lib"
#else
#define OPENCV_LIB_POSTFIX  ".lib"
#endif

#define STR_EXPAND(tok) #tok
#define STR(tok) STR_EXPAND(tok)

#define OPENCV_VERSION_STRING STR(CV_MAJOR_VERSION) STR(CV_MINOR_VERSION) STR(CV_SUBMINOR_VERSION)
#define OPENCV_LIB_EXPAND(x) OPEPCV_LIB_PREFIX x OPENCV_VERSION_STRING OPENCV_LIB_POSTFIX
 
영상처리를 먼저 접하신 선배님의 코드를 살포시 가져와서 사용하시면 됩니다.  코드는 살펴보면 매크로를 이용하여 library 파일을 추가하는 것입니다. 이러한 매크로를 사용하는 부분은생성된 헤더파일에 있으니 참고 바랍니다. 
 
#define.h
 
// 참고: 최상단으로 추가 바랍니다. 

#include "mycv.hpp"
#include "openCVheader/HeaderList.h"

// 생략 ...
 
그리고 Project 내부 define.h 파일은 상위와 같이 추가해주시기 바랍니다. 
 
#main.cpp
 
#include "define.h"

void main()
{
    Mat image = imread("test.jpg");
    resize(image, image, Size(image.cols / 2, image.rows / 2), 0, 0, INTER_CUBIC);
    imshow("Show", image);
    waitKey(0);
}
 
main 파일은 define.h 파일만 추가 하시면 됩니다. 그리고 실행하면 끝...!!
 
물론, 이전 포스팅에서 설명한 툴도 같이 사용하셔야 하는거 알죠?? 
포스팅하면서 적지만, path에 (dot, ".")을 추가하게 되면 컴파일이 되지 않으니 폴더명 수정 후 사용하시기 바랍니다. 
 
 
마무리 

툴은 만드는데 금방 했지만, 블로그 포스팅 하고보니, 네이밍 센스가 영 꽝이네요...다음 버전 업데이트 할 때는 네이밍을 귀엽게(?) 변경 후 업로드 하도록 하겠습니다. 
 

 

 

이 글을 공유하기

댓글(0)

Designed by JB FACTORY