본문 바로가기

OCR/OpenCV

OpenCV 및 관련파일 설치

반응형

OpenCV 및 관련파일 설치

(기초세팅)

 

https://github.com/opencv/opencv_contrib

OpenCV 추가 모듈들

얘는 소스코드로 받아줌.

 

opencv/opencv_contrib

Repository for OpenCV's extra modules. Contribute to opencv/opencv_contrib development by creating an account on GitHub.

github.com

https://github.com/opencv/opencv

OpenCV : 메인 몸체.

얘는 소스코드로 받아줌.

 

opencv/opencv

Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.

github.com

https://developer.nvidia.com/cuda-downloads

CUDA :  nvidia GPU 활용을 위한 옵션 (딥러닝 행렬 처리의 해답인 GPU~!) - nVidia 그래픽카드를 위한 툴킷임.

환경에 맞는 실행파일 받아서 설치하면 됨.

GPU 없으면 건너뛰어도 됨.

 

CUDA Toolkit 10.1 Update 1 Download

Select Host Platform Click on the green buttons that describe your host platform. Only supported platforms will be shown.

developer.nvidia.com

https://github.com/intel/tbb/releases

tbb : Intel Threading Building Blocks의 약자로, 스레딩으로 병렬처리를 함으로써 실행속도를 향상 시켜줌. (차이가 꽤 남)

소스코드는 필요 없으므로 release에서 다운.

 

intel/tbb

Official Intel(R) Threading Building Blocks (Intel TBB) GitHub repository. - intel/tbb

github.com

 

https://cmake.org/download/

git에서 가져온 소스를 토대로, 내 환경에 맞는 Visual Studio 프로젝트 환경으로 뽑아줄 툴.

소스코드는 필요 없으므로 Installer로 받아서 설치.

 

Download | CMake

Current development distribution Each night binaries are created as part of the testing process. Other than passing all of the tests in CMake, this version of CMake should not be expected to work in a production environment. It is being produced so that us

cmake.org


그냥 바로 OpenCV 바이너리 형태로 가져와서 사용해도 되지만, 바이너리에는 이러한 나머지 옵션들이 포함되지 않은 상태임.

포함시켜주려면 소스를 받아와서 빌드해서 사용. => CMake를 이용.

자신에게 필요하다 싶은 소스를 git에서 가져왔으면, CMake를 이용하여 프로젝트 형식으로 뽑아낼 것임.

CMake 경로 설정

Where is the source code: 에는 CMakeLists.txt가 있는 경로로 설정해주면 되고,

Where to build the binaries: 에는 CMake 결과가 나올 경로를 지정하면 됨.

Configure 누르고 오류는 적절하게 해결하고, 체크박스처럼 옵션은 필요한 것 적절히 선택하면 됨.

셋팅이 됐다면 다시 Configure 눌러주고, Congifuring done이 떴다면,

Generate를 눌러서 프로젝트로 뽑을 수 있음. => Visual Studio로 프로젝트 불러와서 Build 하면 됨.

CMakeLists.txt 경로 예시
tbb 선택

실습할 맥북에는 nvidia gpu가 없으므로 cuda는 별도로 설치하지 않았고, TBB만 설치했음.

TBB에만 체크하고 다시 Configure.

 

tbb 셋팅 전

TBB 선택했다면 TBB 관련 경로 설정해달라고 뜸.

 

TBB 설정 완료

TBB 폴더 및 파일에 관한 경로설정을 마쳤다면 다시 Congifure

 

버전 체크

이건 오류는 아니고 CMake에서 찾은 버전 파일이 맞냐고 확인차 띄우는 것임. 다시 Configure

 

opencv_extra_modules_path 설정

이제 빨간 항목은 안보인다. 마지막으로 추가모듈로 다운했던 opencv_contrib를 포함시켜주고 Congifure

nonfree도 추가하자.

 

 ~test, ~world 해제

~~world 항목과 ~~test 항목은 체크 해제하자.
종종 오류가 나기도 하며 빌드하는 데 지장 없음. 시간도 오래 걸림.

Generate -> Open Project

Generate~! 눌러서 프로젝트로 뽑음.

 

우리가 원하는 옵션이 포함된 상태이므로 프로젝트 열어서 그대로 빌드하면 됨.

(빌드 중 오류가 난다면 보통 경로 문제인데, 오류가 난 프로젝트를 선택하여 필요 파일에 대한 경로 추가해주고 다시 빌드하면 됨.)


INSATLL 개별 build

bin은 bin에 debug, release 나뉘어있고, lib도 또 debug, release 나뉘어 있고,

OpenCV와 OpenCV_contrib에 필요한 include 헤더들도 필요하고...

개별적으로 하기 번거로움.

 

install 디렉토리 생성됨

=> 프로젝트에서 INSTALL 프로젝트만 개별 Build 해주면 Build경로에 install이라는 폴더가 생김.

=> 안을 보면 필요한 헤더들 다 모아져있고, debug, release 할 거 없이 bin과 lib들도 다 모여있음.

=> 여기를 참조시켜서 코딩하면 한결 편안함.


프로젝트 생성

프로젝트 속성 설정

프로젝트를 만들었으면 opencv 빌드하고, 필요한 include 파일과 lib, bin을 한군데 다 모아놨던 install 경로를 참조시키자.

(tbb도 추가했으니, tbb 경로도 추가해줘야함. 스크린샷에는 빼먹음)

include 경로에는 install\include 경로를 추가해주고,
library 경로에는 install\x64\vc14\lib 경로 추가해줌. (자신의 타겟 버전과 visual studio 버전에 따라서 조금씩 다름)

install의 bin경로 시스템 환경변수 설정

필요한 dll 파일들을 프로젝트 경로에 복사해줘야하는데, 프로젝트마다 복사해서 쓰기는 매우 번거롭고 용량도 차지함.

=> 시스템 환경변수에 dll 경로를 추가하자~!

=> install\x64\vc14\bin 경로를 추가했다.

환경변수 변경했다면 적용시키기 위해서 set 명령어를 이용하거나, explorer.exe를 죽이고 다시 키거나

잘 모르겠다면 컴퓨터 재부팅을 하면 알아서 적용된다.

 

프로젝트 기본셋팅

cv namespace를 사용하고,

필요한 dependency lib들을 명시한다. (물론 프로젝트 속성 - Linker - Input - Additional Dependencies 에 필요한 lib들 추가해도 됨.)

#ifdef _DEBUG
#pragma comment(lib, "opencv_core410d.lib")
#pragma comment(lib, "opencv_imgproc410d.lib")
#pragma comment(lib, "opencv_highgui410d.lib")
#pragma comment(lib, "opencv_imgcodecs410d.lib")
#pragma comment(lib, "opencv_videoio410d.lib")
#pragma comment(lib, "opencv_xfeatures2d410d.lib")
#else
#pragma comment(lib, "opencv_core410.lib")
#pragma comment(lib, "opencv_imgproc410.lib")
#pragma comment(lib, "opencv_highgui410.lib")
#pragma comment(lib, "opencv_imgcodecs410.lib")
#pragma comment(lib, "opencv_videoio410.lib")
#pragma comment(lib, "opencv_xfeatures2d410.lib")
#endif

파일명의 410은 설치한 cv버전에 따라 다르다. (나는 지금 4.1.0 버전이므로 410으로 나옴)

 

준비 완료 ~.~

반응형

'OCR > OpenCV' 카테고리의 다른 글

C++ 이미지 split, merge  (0) 2019.07.04
C++에서 이미지 가로,세로,채널,타입 구하기  (0) 2019.07.04