OpenCV 3.0이 공개되었다.

http://opencv.org/

http://docs.opencv.org/3.0.0/

https://github.com/itseez/opencv


튜토리얼

http://docs.opencv.org/3.0.0/d9/df8/tutorial_root.html

http://docs.opencv.org/3.0.0/d9/d97/tutorial_table_of_content_features2d.html


기존 버젼의 경우 주로 이미 빌드된 binary를 사용하고,

OpenCV 내부 소스 변경이 필요한 경우 가끔 빌드했었는데,

아래 2가지 이유 때문에, 내 입장에선 이번엔 직접 빌드하는 것이 필수가 됨.


1) OpenCV 3.0의 경우 Visual Studio 2012, 2013 용으로 바이너리 제공

 => 나의 주력 개발 플랫폼인 Visual Studio 2010 용은 제공되지 않음


2) 기존 OpenCV에 포함되었던 모듈이 일부 별도 외부 모듈로 분리

https://github.com/Itseez/opencv_contrib

xfeatures2d (SURF, SIFT) , OCR, DNN 등의 모듈이 이곳에 있다



우선, build용 Tutorial을 보자.

http://docs.opencv.org/doc/tutorials/introduction/windows_install/windows_install.html#installation-by-making-your-own-libraries-from-the-source-files


대체 언제 작성한건가... 설명이 부실하다.

기본적인 컨셉만 이해하고.. 알아서 해보기로..


1. 소스 다운로드


아래 링크에서 바이너리와 함께 제공되는 소스는 직접 빌드하기에는 너무 에러가 많아서,

http://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.0.0/opencv-3.0.0.exe/download


github에서 최신 버젼을 받아 (Download ZIP) 설치 경로에 압축 해제  

(D:\OpenCV_3\opencv-master)

https://github.com/itseez/opencv


2. 추가 모듈 다운로드


surf, sift, ocr 등등 (상세 정보는 https://github.com/Itseez/opencv_contrib/tree/master/modules)

추가 모듈을 활용하기 위해, 아래 링크에서 다운로드 및 설치 경로에 압축해제 

(D:\OpenCV_3\opencv_contrib-master)

https://github.com/Itseez/opencv_contrib


설치법 : https://github.com/Itseez/opencv_contrib/blob/master/README.md


3. CMAKE 다운로드 및 설치

http://www.cmake.org/download/



4. CMAKE로 configure & generate


a) 소스 경로와 모듈을 빌드할 솔루션이 생성될 경로 설정



b) Configure 버튼을 누르면, Compiler를 고르는 옵션이 뜬다.

   이 포스트에서는 Visual Studio 12 2013 Win64 기준


c) Configure가 되면, 빨간 창들과 함께 설정 창이 뜬다.

     extra로 검색하여

     OPENCV_EXTRA_MODULES_PATH에 2번에서 다운받은 파일을 압축해제한 경로 입력

     D:\OpenCV_3\opencv_contrib-master\modules



d) 기본설정에서는 BUILD_opencv_world가 체크해제되어 있음.

     하지만 대부분의 주요 함수가 opencv_world에 다 들어있으므로

   BUILD_opencv_world -> 체크

      

    추가적으로 필자가 기본 셋팅에서 변경한 부분은 아래와 같다.

    예제와 테스트 코드를 보고 싶어서 체크한 것이니, 

    빠른 컴파일을 위해서는 체크하지 않는 것이 좋음.


  WITH_OPENMP -> 체크

   ENABLE_POPCNT -> 체크

   BUILD_TESTS -> 체크

   INSTALL_TESTS -> 체크

   BUILD_EXAMPLES -> 체크

   INSTALL_C_EXAMPLES -> 체크


e) cuda 관련 체크해제

cuda가 설치된 경우

BUILD_opencv_cuda 로 시작하는 옵션들이 등장


opencv_world와 cuda가 충돌이 있는 것 같다. cuda 관련된 모든 옵션 -> 체크해제

* WITH_CUDA는 체크 유지해도 정상 컴파일되는 것으로 보임. (확인 필요)



(cuda가 설치되지 않은 PC에서는 나오지 않았다. 

 그 PC에 정상 컴파일되던 것이 cuda 깔린 PC에서는 컴파일 되지 않아 고생했음)


f) BUILD_opencv_stitching -> 체크 해제


여기에 발암물질이 들어있다. 

체크해제...

체크해놓고 솔루션이 생성되면, 

솔루션을 열어서 stitch 관련된 것을 모두 삭제할 수도 있지만, 번거롭다

( modules/opencv_world 내부의 stitching 삭제, 

  tests_accuracy, tests_performance, samples 내부 stitching 관련 삭제

  install 에러시

OpenCV3\opencv-master\build_vs2010\modules\world의 cmake_install.cmake 

OpenCV3\opencv-master\build_vs2010\modules 의 cmake_install.cmake

OpenCV3\opencv-master\build_vs2010\samples\cpp 의 cmake_install.cmake

에서 stitch 관련된것 삭제 등등등..... -> 그냥 체크해제가 답.)


  

* cyclic dependency 문제가 있어, 컴파일 에러남.

 git에 있는 것은 아래 링크의 것들이 모두 반영되어있는데도 에러 존재

https://github.com/Itseez/opencv/pull/4147

https://github.com/Itseez/opencv/issues/4917 


g) 빨간색이 없어질때까지 configure 클릭 후 generate 클릭

D:\OpenCV_3\opencv-master\build_test 내부에 OpenCV.sln 을 클릭 -> VS 2013으로 열림



5. Visual Studio로 솔루션 빌드


a)빌드-> 구성관리자에서 Release/x64로 변경


b) 소스 변경

build 폴더가 아닌 source 폴더에 있는

modules/world/src/precomp.hpp 를 열어 아래와 같이 주석처리


//#ifdef HAVE_OPENCV_XFEATURES2D

//#include "opencv2/xfeatures2d/nonfree.hpp"

//#endif




* git에서 받은 최신 버젼 소스가 아닌 경우 아래 링크 참고하여 변경 필요

 -> git에서 최신 버젼 받아서 진행하는 것이 정답..

https://github.com/alalek/opencv/commit/8184e57dd6490107211b37492a05d574bcb3d985



[ 아래 c,d는 cmake에서 tests, examples를 체크하지 않았다면 발생하지 않는 문제 ]


c) solution의 application에서 fcw_detect, fcw_train 삭제

   존재하지 않는 opencv_core.lib을 로드하려하여, error 발생

https://github.com/Itseez/opencv/issues/4820


d) (TUTORIAL) LATCH_match 프로젝트 -> 속성 -> 링커 입력에 

..\..\lib\Release\opencv_xfeatures2d300.lib 추가



e) 솔루션 중 ALL_BUILD -> 우클릭 -> 다시 빌드

: 모두 정상 빌드 되어야 함


f) 솔루션 중 CMakeTargets -> install 프로젝트 -> 우클릭 -> 프로젝트만 -> INSTALL만 다시 빌드

: D:\OpenCV_3\opencv\build_test\install 폴더에 아래 파일들이 모두 모임

include 폴더

x64/vc12/lib : library 파일들

x64/vc12/bin : dll 들 


g) 라이브러리 활용 시

솔루션을 생성하고 

->속성 -> c/c++ -> 일반의 추가 포함 디렉토리에 f)의 install/include 경로 입력

           -> 링커 -> 추가 라이브러리 디렉터리에  f)의 install/x64/vc12/lib 경로 입력

           -> 입력 -> 추가 종속성에 필요한 라이브러리 입력

opencv_ts300.lib

      opencv_world300.lib

opencv_xfeatures2d300.lib


소스 코드 작성하고 -> 컴파일 -> exe가 있는 경로에, 

install/x64/vc12/bin 내부에서 필요한 dll 복사

opencv_world300.dll, opencv_xfeatures2d300.dll 등


* 타인에게 솔루션을 배포해야 한다면,

   절대 경로와 무관하게 빌드 가능하도록 

   솔루션 폴더 내부에, libraries\opencv 폴더 등을 만들어서

   이 곳에 include 폴더와 lib 폴더 복사, 필요한 dll도 복사



끝.


VS 2010은 또다른 스토리...............................................

가능하면..최신 버젼 Visual Studio를 쓰는 것이 정신건강에 좋음.




[에러 찾느라 주로 뒤져본 곳 ]

https://github.com/itseez/opencv/issues

https://github.com/Itseez/opencv_contrib/issues

그리고 stackoverflow....


Posted by 우주여행가
,