OpenCV 3.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을 보자.
대체 언제 작성한건가... 설명이 부실하다.
기본적인 컨셉만 이해하고.. 알아서 해보기로..
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
'연구관련 > 프로그래밍' 카테고리의 다른 글
[MATLAB] 문자열 바꾸기 (replace, strrep) (0) | 2015.08.24 |
---|---|
[MATLAB] cell 관련 이것저것 (2) - 계층 구조 cell (0) | 2015.08.20 |
[MATLAB] 여러개의 cell, 하나로 합치기 (계층/비계층 구조 cell) (1) | 2015.08.20 |
[MATLAB] textscan 사용 시 header 부분 혹은 특정 부분 skip하여 읽기 (0) | 2015.08.20 |
[MATLAB] cell 관련 이것저것 (1) - 비계층 구조 cell (0) | 2015.08.18 |