메뉴 건너뛰기

XEDITION

project2018

Visual Studio 2017에서 OpenCV 3.4를 사용하는 방법

proin 2018.05.14 10:20 조회 수 : 0

OpenCV 공식 사이트에서 미리 빌드되어 배포되는 윈도우용 라이브러리를 Visual Studio 2017에서 사용하기 위해 필요한 과정을 설명합니다.


 

OpenCV 공식 사이트에서 Win pack을 클릭하여 다운로드 받습니다.

http://opencv.org/releases.html

 



 

github에서도 다운로드 가능합니다.

https://github.com/opencv/opencv/releases

 



 

opencv-3.4.0-vc14_vc15.exe 이름의 파일이 다운로드 됩니다

이름에서도 알수 있듯이 이제는 vc14(Visual Studio 2015) 외에 vc15(Visual Studio 2017)도 미리 빌드된 라이브러리가 제공됩니다.



 

실행하면 압축을 해제할 경로를 물어보는데 우선은 다운로드 받은 폴더로 지정해주었습니다.

Extract를 클릭하면 압축 해제가 시작됩니다.

 



 

opencv 폴더가 생성됩니다.

opencv 폴더는 미리 빌드된 라이브러리가 포함되어 있는 build 폴더와 OpenCV 3.4 소스 코드가 포함되어 있는 sources 폴더로 구성되어 있습니다.

 



 

opencv 폴더 이름을 opencv-3.4로 변경하고 C:로 복사했습니다.

포스팅에서는 OpenCV 라이브러리 위치가 C:opencv-3.4인 것으로 하고 진행하겠습니다.



 

1. 비주얼스튜디오의 메뉴에서 파일 > 새로 만들기 > 프로젝트를 선택합니다.


 

2. 새 프로젝트 에서 빈 프로젝트를 선택합니다.

(예전에 있던 Win32 콘솔 프로젝트가 Visual Studio 버전업에 따라 사라져서 대신 빈 프로젝트를 사용합니다.)

 

프로젝트 이름을 적어주고 확인을 클릭합니다.

 



 

3. 솔루션 탐색기에서 소스 파일을 선택합니다.

마우스 오른쪽 버튼을 눌러 보이는 메뉴에서 추가 > 새 항목을 클릭합니다.

 



 

C++ 파일(.cpp)를 선택하고 소스 파일의 이름을 적고  추가를 클릭합니다.

(이름을 바꾸지 않아도 됩니다.)

 



 

소스 파일 항목에 cpp 파일이 추가됩니다.

 



 

4. 솔루션 플랫폼을 x64로 변경합니다.

x86용이 필요시 OpenCV 소스 코드를 x86에 맞추어 컴파일해줘야 합니다.

 



 

5. 솔루션 탐색기에서 프로젝트 이름을 선택하고 메뉴에서 프로젝트 > 속성을 선택합니다.

 



 

속성 페이지 창에서 구성모든 구성으로 변경합니다.

Debug 모드와 Release 모드의 공통 부분이 같이 설정됩니다.

 



 

속성 페이지 창에서 C/C++를 선택하고 추가 포함 디렉터리 항목에 OpenCV 헤더 파일 위치를 입력합니다.

C:opencv-3.4buildinclude

 



 

속성 페이지 창에서 링커를 선택하고 추가 라이브러리 디렉터리 항목에 OpenCV 라이브러리 파일 위치를 입력합니다.

C:opencv-3.4buildx64vc15lib

 



 

속성 페이지 창에서 구성 속성 > 디버깅을 선택하고 환경 항목에  OpenCV 라이브러리  DLL 파일 위치를 입력합니다.

PATH=C:opencv-3.4buildx64vc15bin;%PATH%


 



 

구성을 활성(Debug)로 변경하고


 

예를 눌러서 설정을 저장합니다.



 

링커 > 입력을 선택하고 추가 종속성의 값 맨앞에 다음 내용을 입력합니다.

 

opencv_world340d.lib;

 



 

구성을 Release로 변경하고

 



 

예를 눌러서 설정을 저장합니다.

 



 

링커 > 입력을 선택하고 추가 종속성의 값 맨앞에 다음 내용을 입력합니다.

 

opencv_world340.lib;

 


 

이제 확인을 눌러서 설정창을 닫습니다.



 

6. 다음 경로에 있는 소스 코드를  테스트에 사용합니다.

 

C:opencv-3.4sourcessamplescppvideocapture_basic.cpp

 

/**
@file videocapture_basic.cpp
@brief A very basic sample for using VideoCapture and VideoWriter
@author PkLab.net
@date Aug 24, 2016
*/

#include <opencv2/opencv.hpp>
#include <iostream>
#include <stdio.h>

using namespace cv;
using namespace std;

int main(int, char**)
{
Mat frame;
//--- INITIALIZE VIDEOCAPTURE
VideoCapture cap;
// open the default camera using default API
cap.open(0);
// OR advance usage: select any API backend
int deviceID = 0;             // 0 = open default camera
int apiID = cv::CAP_ANY;      // 0 = autodetect default API
 // open selected camera using selected API
cap.open(deviceID + apiID);
// check if we succeeded
if (!cap.isOpened()) {
cerr << "ERROR! Unable to open cameran";
return -1;
}

//--- GRAB AND WRITE LOOP
cout << "Start grabbing" << endl
<< "Press any key to terminate" << endl;
for (;;)
{
// wait for a new frame from camera and store it into 'frame'
cap.read(frame);
// check if we succeeded
if (frame.empty()) {
cerr << "ERROR! blank frame grabbedn";
break;
}
// show live and wait for a key with timeout long enough to show images
imshow("Live", frame);
if (waitKey(5) >= 0)
break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}



 

프로젝트의 소스 파일에 해당 코드를 복사해옵니다.

 




 

F5를 눌러서 컴파일 및 실행시켜 봅니다.

툴바에서  솔루션 구성이  Debug / Release 로 설정되어 있을 때, 각각 문제 없이  동작하는지 확인해봅니다.



 

참고로 F5를 눌러서 실행하면 디버거와 함께 프로그램이 실행되고,  Ctrl + F5를 눌러서 실행하면 프로그램만 실행됩니다.

 



 

프로그램에 문제가 있어서 breakpoint( 브레이크포인트, 중단점)을 설정했다면 F5를 눌러서 실행하셔야 합니다.



 

문제 없다면 웹캠으로부터 캡처된 영상을 보여주는 윈도우가  보입니다.

 



 

가급적이면 백신의 실시간 보호 기능을 끄는게 좋습니다.

빌드할 때  실행파일을 검사하기 때문에 번거롭습니다.

일부 백신에서는 차단해버려서 실행이 제대로 안되기도 합니다.


 

위로