본문 바로가기

옥탑방주인/OpenCV

OpenCV(3.4.1)를 Visual Studio 2017에서 사용하는 방법

OpenCV + Unity를 짬뽕으로 구현해야되는 미션이 떨어졌다.


인터넷에서 검색을 해보니 위에 방식을 구현하려면 


  1. Visual Studio에서 OpenCV라이브러리 들을 dll파일로 만들어서 unity에서 호출.

하면 된다는 것이였다. 먼저 OpenCV가 잘 작동하는지 알아봐야되기 때문에, Visual Studio를 깔은 후

OpenCV라이브러리를 호출하여 동작해보았다.

아래의 설명은 Visual Studio가 설치되었다는 가정 하에 진행된다.


먼저 OpenCV 공식 홈페이지에 들어가서 각자에 알맞는 패키지를 다운로드한다.


본인은 윈도우 환경이라 Winpack을 다운로드 하였다.


https://opencv.org/releases.html




Win pack을 누르면 자동으로 다른사이트로 리다이렉팅 되는데, 5초 뒤에 파일이 자동으로 다운로드 된다.



github에서도 다운로드가 가능하다.


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



opencv-3.4.1-vc14_vc15.exe파일을 다운로드 하였는데, vc14는 visual studio 15버전 vc15는 17버전을 의미한다.




다운로드가 완료되면 파일을 더블 클릭 하여 열어준다.


원하는 경로를 지정 후 Extract를 클릭한다.



압축 해제가 완료되면 Visual studio를 실행한다.




1. Visual studio가 실행되면 새 프로젝트 만들기를 클릭한다.



빈 프로젝트를 클릭 후 아래에서 원하는 프로젝트 이름을 기입하고 확인버튼을 눌러서 프로젝트를 생성한다.



2. 그럼 빈 프로젝트 화면이 나올텐데, 오른쪽에 위치해있는 솔루션 탐색기 부분에 소스 파일 부분에서 마우스 오른쪽 클릭 -> 추가 -> 새 항목 부분을 클릭한다.






3. C++ 파일 클릭 후 이름은 main.cpp로 설정한다.






4. 생성이 완료되었다면 Visual studio 상단 부분에 x86으로 되있는 것을 x64로 바꿔준다.(64비트 환경으로 진행 안할것이면 x86으로 내비두어도 된다.)






5. 솔루션 탐색기의 프로젝트부분에서 오른쪽 클릭 후 속성을 누른다.






6. 구성을 모든 구성으로 바꿔주고 플랫폼도 활성(x64)로 바꿔준다.




7. C/C++ 클릭 후 추가 포함 디렉터리에 위에서 설치했던 opencv 폴더의 경로를 설정해준다.


예) opencv설치폴더\build\include






8. 링커 -> 일반 클릭 후 추가 라이브러리 디렉터리에 아래와 같은 경로를 설정해준다


예) opencv설치폴더\build\x64(32비트 환경이면 x86)\vc15\lib;







9. 구성 속성 -> 디버깅 클릭 후 환경 부분의 경로를 아래와 같이 바꿔준다.


예) PATH=opencv설치폴더\build\x64\vc15\lib;%PATH%






10. 구성 부분을 활성(Debug)로 바꿔 준 후 링커 -> 입력 -> 추가 종속성에서 opencv_world341d.lib;를 입력해준다.






11. 구성 부분을 Release로 바꿔 준 후, 링커 -> 입력 -> 추가 종속성에 opencv_world341.lib;를 입력해준다. 이 때 속성 페이지 변경 내용 저장 내용이 나오면 "예"를 클릭한다.






12. 아까 만든 main.cpp로 돌아가서 아래의 테스트 코드를 입력해본다.

/**
@file test.cpp
@author JESEONG CHUNG
@date APR 4, 2018
*/

#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
	cv::Mat redImg(cv::Size(320, 240), CV_8UC3, cv::Scalar(0, 0, 255));
	cv::namedWindow("red", cv::WINDOW_AUTOSIZE);
	cv::imshow("red", redImg);
	cv::waitKey(0);
	cv::destroyAllWindows();
	return 0;
}



13. 잘 실행이 된다.