James's Library
Back to Library

Ubuntu OpenCV 3.X 설치

Ubuntu에서 OpenCV 3.x를 소스 빌드로 설치하는 방법. 필수·선택 의존성 설치부터 CMake 구성, CUDA 가속 옵션, 빌드·설치까지 단계별로 정리했다.

Seongdo··3 min read
opencvubuntucomputer visionc++linux

이 포스트는 Ubuntu 터미널에서 명령어를 실행하는 것을 가정한다. 소스 다운로드부터 빌드까지 모든 명령어는 홈 디렉토리(~)에서 시작한다.

참고: OpenCV 3.4.6 기준으로 작성되었다. 현재 최신 버전은 4.x이며, wget URL의 버전 번호만 교체하면 동일한 절차로 설치할 수 있다.

필수 라이브러리 설치

기본 빌드 도구, CMake, 압축 해제 도구를 먼저 설치한다.

sudo apt-get install -y build-essential cmake unzip

GCC 버전 관리 (선택)

기본 GCC 버전으로 충분하다면 이 절은 건너뛰어도 된다. 특정 버전이 필요하다면 Ubuntu Toolchain PPA를 추가한 뒤 설치한다.

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-5 g++-5 gcc-6 g++-6 gcc-7 g++-7

시스템 기본 컴파일러를 교체하려면 update-alternatives로 우선순위를 설정한다.

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 70
sudo update-alternatives --config gcc

마지막 명령을 실행하면 설치된 버전 목록이 출력되며, 번호를 입력해 기본값을 선택할 수 있다. 기본값은 바꾸지 않고 cmake 빌드에서만 특정 버전을 사용하려면, cmake 실행 시 다음 옵션을 추가한다.

-DCMAKE_C_COMPILER=/usr/bin/gcc-5 -DCMAKE_CXX_COMPILER=/usr/bin/g++-5

선택 라이브러리 설치

필요한 기능에 따라 선택적으로 설치한다. 일반적인 개발 환경이라면 아래 항목 전체를 설치하는 것이 무난하다.

이미지 포맷

JPEG, PNG, TIFF 파일 인코딩/디코딩에 필요하다.

sudo apt-get install libjpeg-dev libpng-dev libtiff-dev

비디오 관련

FFmpeg 기반 인코딩·디코딩, V4L2 카메라 입력, Xvid·H.264 코덱을 포함한다.

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev \
  libv4l-dev libxvidcore-dev libx264-dev

GUI

cv::imshow() 등 OpenCV 화면 출력 기능에 필요하다.

sudo apt-get install libgtk-3-dev

수학 라이브러리 및 기타

libatlas-base-dev는 행렬 연산을 가속하는 BLAS/LAPACK 구현이다. gfortran은 ATLAS 일부 컴포넌트 빌드에 필요하고, libgflags-dev는 일부 contrib 모듈이 사용하는 커맨드라인 플래그 라이브러리다.

sudo apt-get install libatlas-base-dev gfortran libgflags-dev

OpenCV 설치

다운로드

홈 디렉토리에서 실행한다.

wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.6.zip
unzip opencv.zip
mv opencv-3.4.6 opencv

SIFT·SURF 등 특허 알고리즘을 포함한 비상업 모듈이 필요하다면 opencv_contrib도 함께 받는다. 상업적 목적으로 사용할 경우 라이선스를 별도로 확인해야 한다.

wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.6.zip
unzip opencv_contrib.zip
mv opencv_contrib-3.4.6 opencv_contrib

CMake 구성

빌드 디렉토리를 생성하고 CMake를 실행한다.

cd opencv
mkdir build && cd build

opencv_contrib 없이 기본 빌드하는 경우:

cmake -DCMAKE_BUILD_TYPE=RELEASE \
      -DCMAKE_INSTALL_PREFIX=/usr/local \
      ..

opencv_contrib 포함 빌드하는 경우 (-DOPENCV_ENABLE_NONFREE=ON은 특허 알고리즘 활성화):

cmake -DCMAKE_BUILD_TYPE=RELEASE \
      -DCMAKE_INSTALL_PREFIX=/usr/local \
      -DOPENCV_ENABLE_NONFREE=ON \
      -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
      ..

NVidia GPU를 활용하려면 위 명령에 CUDA 관련 옵션을 추가한다.

cmake -DCMAKE_BUILD_TYPE=RELEASE \
      -DCMAKE_INSTALL_PREFIX=/usr/local \
      -DOPENCV_ENABLE_NONFREE=ON \
      -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
      -DWITH_CUDA=ON \
      -DENABLE_FAST_MATH=ON \
      -DCUDA_FAST_MATH=ON \
      -DWITH_CUBLAS=ON \
      ..

ccmake를 사용하면 사용 가능한 옵션을 대화형으로 탐색할 수 있다. 단, 모든 옵션이 표시되는 것은 아니므로 필요한 옵션은 cmake 명령에 직접 지정해야 한다.

sudo apt-get install cmake-curses-gui
ccmake ..

빌드 및 설치

$(nproc)은 시스템의 CPU 코어 수를 자동으로 사용해 병렬 컴파일 속도를 높인다. 시스템 사양에 따라 수십 분이 소요된다.

make -j$(nproc)

빌드 완료 후 make test로 테스트를 실행할 수 있지만, OpenCV 전체 테스트 스위트는 1시간 이상 걸리므로 생략해도 무방하다.

시스템 디렉토리에 설치하므로 sudo가 필요하다. 설치 후 ldconfig로 링커 캐시를 갱신한다.

sudo make install
sudo ldconfig

설치 확인

pkg-config --modversion opencv

설치한 버전 번호(예: 3.4.6)가 출력되면 정상 설치된 것이다. OpenCV 4.x를 설치한 경우에는 opencv 대신 opencv4로 확인한다.