Ubuntu OpenCV 3.X 설치
이 포스트의 내용은 Ubuntu terminal에서 실행하는 것을 가정한다.
필수 라이브러리 설치
먼저 기본 개발환경에 관련된 라이브러리와 최신 C++ 버전과 컴파일러를 이용하기 위한 추가 라이브러리 설치한다.
sudo apt-get install -y build-essential cmake
만약 특별한 버전의 컴파일러가 필요할 경우 먼저 다음과 같이 toolchain을 Ubuntu의 업데이트 목록에 넣어준다.
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
이제 필요한 버전의 컴파일러를 다음과 같이 다운받는다.
sudo apt-get install gcc g++ gcc-5 g++-5 gcc-6 g++-6 gcc-7 g++-7
참고로 특정 gcc 또는 g++ 버전을 CMake와 함께 이용하고 싶을 때는 CMake의 옵션을 이용할 수 있다. 예를 들어,
cmake -DCMAKE_C_COMPILER=/usr/bin/gcc-5 -CMAKE_CXX_COMPILER=/usr/bin/g++-5
같이 cmake 옵션에 컴파일러를 직접 지정해 줄 수 있다. 필요할 때만 특정 컴파일러를 지정하지 않고 아예 기본 컴파일러를 바꾸고 싶을 경우 shell의 update-alternatives 명령을 이용하면 된다.
선택 라이브러리 설치
이부분은 필요한 라이브러리에 따라 많은 부분이 달라질 수 있으므로 잘 선택하여 설치한다.
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev sudo apt-get install libgtk-3-dev sudo apt-get install libatlas-base-dev gfortran sudo apt-get install libgflags-dev
위 명령어들은 다음 라이브러리들을 포함한다.
- 이미지 관련 라이브러리
- 비디오 관련 라이브러리
- libavcodec: FFmpeg에 포함된 무료 오픈소스 비디오 인코딩/디코딩 라이브러리
- libavformat: FFmpeg에 포함된 무료 비디오, 오디오 파일 및 스트리밍 등의 입출력 처리용 오픈소스 라이브러리
- libswscale: FFmpeg에 포함되고 최적화 된 이미지/비디오 처리 라이브러리. 라이브러리 이름과 같이 resize, scaling, colospace conversion 등을 지원한다.
- libv4l: 필립스에서 개발하고 유지하는 리눅스의 비디오 입출력 레이어. 기존의 V4L2 라이브러리 위에 추가된다.
- libxvidcore: 오픈 소스 MPEG-4 비디오 코덱 라이브러리
- libx264: X.264 코덱 라이브러리
- GUI 관련 라이브러리
- libgtk-3: 멀티 플랫폼 GUI 라이브러리
- 수학 라이브러리
- libatlas: 최적화된 선형대수 라이브러리
- 기타 컴파일러
- gfortran: GNU 포트란 컴파일러
- 유틸리티
- libgflags: 로깅 라이브러리
OpenCV 라이브러리 설치
먼저 사용할 버전과 필요한 범위, 목적을 결정한다. 그리고 다음과 같이 소스코드를 내려받는다.
wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.6.zip
만약 다른 버전의 OpenCV가 필요할 경우 3.4.6을 필요한 버전으로 대체한다. 기본 라이브러리에 추가로 유료 또는 비상업 모듈이 필요할 경우 OpenCV Contribution Modules을 내려 받을 수 있다. 대부분의 모듈이 상업적 목적으로 사용할 경우 라이센스 획득이 필요하므로 잘 확인하도록 한다.
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.6.zip
내려받은 압축 파일들은 다음과 같이 해제한다.
unzip opencv.zip unzip opencv_contrib.zip
조금 더 쉬운 접근을 위해 다음과 같이 압축 해제된 폴더의 이름을 변경 해 준다.
mv opencv-3.4.6 opencv mv opencv_contrib-3.4.6 opencv_contrib
이제 소스를 컴파일 할 차례이다. 먼저 다음과 같이 opencv
폴더 안에 build
폴더를 만들고 이동하자.
cd opencv mkdir build cd build
마지막으로 CMake를 사용하여 Makefile을 만들어 줄 차례이다. 이 부분은 사용자의 필요에 따라 다양한 변화가 요구될 수 있으므로 잘 확인하고 선택해야 한다. 다음은 기본적인 목적으로 사용할 수 있는 CMake 명령이다.
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DINSTALL_C_EXAMPLES=OFF -DOPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=~/Library/opencv_contrib/modules ..
만약 NVidia GPU가 설치되어 있고 CUDA로 구현된 알고리즘들을 사용하고 싶다면 다음의 추가 옵션들을 위 명령어의 ..
전에 삽입하면 된다.
-DWITH_CUDA=ON -DENABLE_FAST_MATH=ON -DCUDA_FAST_MATH=ON -DWITH_CUBLAS=ON
CUDA 설치와 관련된 정보는 이 링크를 확인 해 보자.
더 많은 빌드 옵션들을 알고 싶다면 ccmake
라는 툴을 사용 해 보자. ccmake
는 다음과 같이 설치할 수 있다.
sudo apt-get install cmake-curses-gui
위의 cmake 명령을 실행한 후 다음 명령을 입력한다.
ccmake ..
주의할 점은 ccmake가 사용가능한 모든 옵션을 보여주는 것이 아니므로 필요할 경우 특정 옵션은 직접 지정해야 할 수도 있다. 마지막으로 생성된 Makefile을 이용하여 빌드하자.
make -j4
j
옵션 다음에 붙은 숫자는 동시에 몇 개의 job을 컴파일할지를 의미한다. 사용할 경우 두 개 이상의 쓰레드가 사용된다.
컴파일이 잘 되었는지 확인 해 보고 싶다면 다음 명령을 수행해 본다.
make test
마지막으로 다음 명령어로 컴파일된 binary들을 옮기자.
sudo make install
시스템 폴더에 설치되므로 sudo
명령어를 붙여야 한다.