메뉴 건너뛰기

XEDITION

project2018

http://webnautes.tistory.com/1132


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


 

마지막 업데이트 - 2018. 5. 31



 

1. OpenCV 공식 사이트(http://opencv.org/releases.html )에서 Win pack을 다운로드 받습니다.

 


 

OpenCV 깃허브(github)에서는 opencv-3.4.1-vc14_vc15.exe를 다운로드 받으면 됩니다.  

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

 



 

2. 다운로드 받은 파일의 이름 opencv-3.4.1-vc14_vc15.exe 에서도 알 수 있듯이  vc14(Visual Studio 2015)와 vc15(Visual Studio 2017)를 위해 미리 빌드된 라이브러리가 배포되고 있습니다.


 

실행하면 압축을 해제할 위치를 물어봅니다. 위치 변경없이 바로 Extract를 클릭하면 설치 파일이 위치한 곳에 압축이 풀립니다.  

 

디폴트 폴더 이름인  opencv를 변경할 수 없기 때문에 기존에 설치된 OpenCV 라이브러리에 덮어쓰기가 될 수 있습니다.

 

가급적이면 압축을 풀고 이름을 변경한 후에 해당 위치로 복사하세요.

 



 

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

 


 

opencv 폴더 이름을  적당한 이름으로 변경 후 원하는 위치로 복사해줍니다.

본 포스팅에서는 OpenCV 라이브러리 폴더가 C:opencv-3.4.1 에 있는 것으로 가정하고 진행합니다.



 

4. 비주얼 스튜디오의 메뉴에서 파일 > 새로 만들기 > 프로젝트를 선택하거나 Ctrl + Shift + N을 누릅니다.

 

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

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

 

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

 



 

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

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

 



 

6. C++ 파일(.cpp)를 선택하고 소스 파일의 이름을 수정한 후,  추가 버튼을 클릭합니다.

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

 


 

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

 



 

7. 툴바의 솔루션 플랫폼을  x64로 변경합니다.

 


 

현재는 빌드된 64비트용(x64) 라이브러리만 배포되고 있기 때문에 32비트용(x86)이 필요한 경우에는  OpenCV 소스 코드를 가지고 컴파일해야 합니다.

 


 

경험상 Visual Studio 버전이 차이나도 동작할 수는 있지만 오동작하는 발생하면 다시 라이브러리를 빌드해야 합니다


 

OpenCV 소스코드 컴파일시 다음 포스팅을 참고하시면 도움이 될 듯합니다.

 

Visual Studio 2017용으로 OpenCV 3.4 빌드 하기 (opencv_contrib 포함)

http://webnautes.tistory.com/1036



 

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

 



 

9. 속성 페이지 창 왼쪽 위에 보이는 구성모든 구성으로 변경합니다.

Debug 모드와 Release 모드의 공통 부분을 한번에 설정할 수 있습니다.

 



 

10. 왼쪽 리스트에서 C/C++를 선택하고 추가 포함 디렉터리 항목에 OpenCV 헤더 파일 위치를 입력합니다.

C:opencv-3.4.1buildinclude

 



 

11. 왼쪽 리스트에서 링커를 선택하고 추가 라이브러리 디렉터리 항목에 OpenCV 라이브러리 파일 위치를 입력합니다.

C:opencv-3.4.1buildx64vc15lib

 



 

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

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

 



 

13. 구성활성(Debug)로 변경하고

 


 

를 클릭해서 설정을 저장합니다.

 


 

왼쪽 리스트에서 링커 > 입력을 선택하고 추가 종속성 항목의  값 맨 앞에 디버그용 라이브러리 이름을 입력합니다. 이름 뒤에 세미콜론을 넣어줘야 합니다.

 

opencv_world341d.lib;

 



 

14. 구성을 Release로 변경하고

 


 

를 클릭해서 설정을 저장합니다.

 


 

왼쪽 리스트에서 링커 > 입력을 선택하고 추가 종속성 항목의 값 맨 앞에 릴리즈용 라이브러리 이름을 입력합니다. 이름 뒤에 세미콜론을 넣어줘야 합니다.

 

opencv_world341.lib;

 


 

이제 확인을 눌러서 속성 페이지 창을 닫습니다.



 

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

 

C:opencv-3.4.1sourcessamplescppvideocapture_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를 눌러서 실행하면 프로그램만 실행됩니다.

 

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

ESC 키를 누르면 실행이 중단됩니다.

 

 

번호 제목 글쓴이 날짜 조회 수
91 [검색] [Udacity] SelfDrivingCar- 2-4. 차선 인식(응용) proin 2018.06.20 5
90 [검색] 자율 주행 프로젝트 (opencv, stereo camera , 차선인식 , 장애물 감지 및 회피) proin 2018.06.20 3
89 [검색] [자율주행장난감] Hough Transform을 통한 차선 검출 proin 2018.06.20 2
88 [검색] 강좌 6 OpenCV를 이용한 차선 검출 proin 2018.06.20 4
87 [Open CV] Visual Studio 2015에서 OpenCV 3.2 연동하기 proin 2018.06.19 2
» [OpenCV] Visual Studio 2017에서 OpenCV 3.4.1를 사용하는 방법 proin 2018.06.19 1
85 ubuntu 16.04에서 iptables설정 save하기 proin 2018.06.18 1
84 PHP 서버 timezone 설정 방법 proin 2018.06.18 2
83 Ubuntu 서버 16.04에 LEMP 스택 설치하기 (Nginx, MySQL, PHP) proin 2018.06.17 5
82 [자율주행] 뭔가 참고하기 괜찮을 듯한 것 proin 2018.06.14 1
81 [YouTube] OpenCV를 이용한 자율주행 자동차 proin 2018.06.14 1
80 [검색] 강좌 7 OpenCV를 이용한 자율 주행 소개 proin 2018.06.14 1
79 Layer 화면 중앙정렬 방법 proin 2018.06.10 4
78 [Ubuntu] MySQL 외부접속 설정하기 proin 2018.06.10 2
77 한번에 끝내는 Ubuntu 웹서버세팅 (우분투 서버세팅) proin 2018.06.07 9
76 [linux] 리눅스 링크 폴더 만들기 proin 2018.06.07 2
75 [기본] 리눅스의 퍼미션(권한)을 조정하기 (chmod, chown) proin 2018.06.07 2
74 우분투 - FTP 서버의 설치와 이용법 - vsftpd proin 2018.06.07 1
73 DNSZi에서 Dynamic DNS (리눅스 DDNS 자동 업데이트 설정)관리 하는 법 proin 2018.06.05 1
72 iptables를 사용한 방화벽 설정 proin 2018.06.05 3
위로