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....