메뉴 닫기

Ubuntu 20.04 에서 OpenCV 4.5.0 설치하기

이전글

Ubuntu 20.04에서 OpenCV를 설치하도록 하겠습니다. 본 글에서는 OpenCV를 직접 빌드해서 설치합니다. 설치 과정 일부는 이전글과 이어지므로 위의 링크를 확인하시기 바랍니다. 아래 순서를 따르면 Ubuntu 18.04도 설치 가능합니다.

오래 전에 임베디드 개발할 때 리눅스를 많이 써서 나름 자신이 있었는데, 생각보다 설치가 까다롭네요. 업무할 때는 윈도우에서 영상처리 라이브러리를 다뤘던 터라, 집에서는 리눅스에서 한 번 해볼까 싶었는데 시행착오를 생각보다 많이 겪었습니다. 여차저차해서 설치에는 성공했습니다.


1. Python 설치 (필수 X)

Python 설치 방법을 간단히 소개합니다. PC에 이미 Python이 설치되어 있다면 넘어가셔도 됩니다. 아래 방법은 apt-get으로 설치하는 방법이 아닌, python 코드를 직접 다운로드 해서 설치하는 방법입니다.

현재 PC에 설치되어 있는 Python 버전을 확인하려면, 터미널에 python –version 을 입력하면 됩니다. 왠만해서는 기본 설치되어 있는 Python은 건드리지 않는 것이 좋을 것 같습니다. 그리고 다른 버전을 써야겠다면 아래 내용은 참고만 하시고 가상환경을 만드는 방법을 추천드려요. 괜히 python을 잘못 들쑤시면, 의존성 때문에 gnome을 포함한 수많은 패키지가 사라지거나 꼬이더라고요. 구글링하면 Python을 삭제하고 나서 GUI 부팅이 안된다며 도움을 요청하는 글을 간간히 찾아 볼 수 있습니다. 어찌저찌하면 복구할 수 있겠지만, 정말 귀찮아집니다.

# 빌드용 필수 패키지를 설치합니다.

$ sudo apt-get install build-essential checkinstall

$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev

$ sudo apt-get install tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev

# Python을 다운로드하고 압축을 풉니다.

$ sudo wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz

$ sudo tar xzf Python-3.9.0.tgz

# 압축 해제 후, 해당 폴더에 들어가서 빌드를 합니다.

$ cd Python-3.9.0/

$ sudo ./configure –enable-optimizations

$ sudo make altinstall

#  Python Path를 확인합니다. 지금은 기본으로 설치된 Python과 연결이 되어 있을 겁니다.

# update-alternatives는 python 실행 시, 새로 설치한 Python과 연결되도록 해줍니다.

$ ls -al /usr/bin/python3

$ sudo update-alternatives –install /usr/bin/python3 python3 /usr/local/bin/python3.9  3

$ python3 -V

#pip를 업그레이드 하고, 필요한 python package를 설치합니다. 본문에서는 일단 numpy만 설치하였습니다.

$ python3 -m pip install –upgrade pip

$ python3 -m pip list

$ python3 -m pip install numpy


2. 기본 작업 수행

기존에 설치된 opencv 를 삭제합니다.

sudo apt-get remove libopencv*

sudo apt-get autoremove

패키지 리스트를 업데이트하고, 업그레이드를 진행합니다.

$ sudo apt-get update

$ sudo apt-get upgrade

컴파일 전 필요한 패키지를 설치합니다. (빌드 도구, Image, Video, GUI 등…)

$ sudo apt-get install build-essential cmake git pkg-config dkms

$ sudo apt-get install freeglut3 freeglut3-dev libxi-dev libxmu-dev

$ sudo apt-get install ubuntu-restricted-extras

$ sudo apt-get install libjpeg-dev libtiff5 libjasper-dev libpng-dev

$ sudo apt-get install libavcodec-dev ffmpeg libavformat-dev libswscale-dev libv4l-dev v4l-utils

$ sudo apt-get install libxvidcore-dev libx264-dev libxine2-dev

$ sudo apt-get install libgtk-3-dev

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

$ sudo apt-get install mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev

※ libjasper-dev 패키지를 설치할 때 오류가 발생할 경우, 아래와 같이 입력합니다.
sudo add-apt-repository “deb http://security.ubuntu.com/ubuntu xenial-security main”


3. opencv와 opencv_contrib 다운로드

OpenCV github-Release에 들어갑니다. OpenCV github(github.com/opencv/opencv/releases)에 접속하면, 현재 release 되고 있는 버전 정보를 확인할 수 있습니다. OpenCV는 3.x 버전과 4.x 버전이 각각 릴리즈 되고 있는데요, 3.x 버전이 4.x 버전보다 좀 더 최적화가 잘 되어있고 안정적이라는 장점이 있습니다. 4.x 버전은 C++11로 쓰여졌고, opencv_contrib를 좇아가려면 추천한다고 하네요. 저도 자세한 내용은 좀 더 찾아봐야겠지만 연구용으로 쓸 것이면 4.x 가 나을 것 같고, 상업용으로 쓴다면 3.x가 낫지 않을까 개인적으로 생각해봅니다.

opencv_contrib는 opencv의 extra module입니다. 아직 안정화가 덜 되었거나, 최신 기술이어서 좀 더 검증이 필요하다던가, 특허 이슈가 있다거나, non-free 등의 이유로 opencv_contrib에 속해 있습니다. 버전업이 되면서 opencv_contrib에 있다가 opencv쪽으로 넘어오는 API도 있습니다. 아무튼 opencv_contrib는 상용 제품에 사용하기 전에 반드시 확인해야 합니다.

저의 설치 목적은 흥미목적으로 OpenCV를 살펴보고 개발하는 것이므로, 4.x를 설치해보도록 하겠습니다. 2020년 10월 중순에 4.5.0 버전이 새로 나왔네요. OpenCV 릴리즈 버전 소스코드 압축파일을 다운로드 하는 방법은 2가지가 있습니다. ①OpenCV github에서 다운로드하거나, ②wget을 사용하여 다운로드 합니다.

$ cd ~

$ mkdir opencv

$ cd opencv

$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.0.zip

$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.0.zip

$ unzip opencv.zip

$ unzip opencv_contrib.zip

unzip으로 압축을 풀면 opencv 폴더 안에 opencv-4.5.0opencv_contrib-4.5.0 폴더가 생깁니다.




4. opencv 소스코드 컴파일하기 

먼저 opencv-4.5.0 폴더로 이동해서 컴파일을 위한 임시폴더 build를 만듭니다. 이제 build 폴더로 이동하여, 컴파일을 위한 Configuring을 진행합니다. 저도 cmake를 쓸 때 인터넷을 뒤져가며 옵션을 설정하는데, 매번 할 때마다 ‘Configuring incomplete, errors occurred!‘ 메시지를 안 만난 적이 없던 것 같네요. 아래 제가 사용한 옵션을 참고하셔서 진행하시기 바랍니다.

$ cd ~/opencv/opencv-4.5.0

$ mkdir build

$ cd build

$ cmake -D CMAKE_BUILD_TYPE=RELEASE

-D CMAKE_INSTALL_PREFIX=/usr/local

-D OPENCV_GENERATE_PKGCONFIG=ON
-D OPENCV_ENABLE_NONFREE=ON

-D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-4.5.0/modules

-D INSTALL_C_EXAMPLES=ON

-D INSTALL_PYTHON_EXAMPLES=ON

-D BUILD_EXAMPLES=ON

-D BUILD_DOCS=OFF

-D BUILD_SHARED_LIBS=ON

-D BUILD_opencv_python2=OFF
-D BUILD_opencv_python3=ON
-D BUILD_NEW_PYTHON_SUPPORT=ON

-D WITH_CUDA=ON

-D WITH_CUBLAS=ON

-D WITH_CUDNN=ON

-D CUDA_FAST_MATH=1

-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2

-D OPENCV_DNN_CUDA=ON

-D CUDA_ARCH_BIN=7.5

-D CUDA_ARCH_PTX=7.5

-D CUDNN_VERSION=8.0

-D CUDNN_INCLUDE_DIR=/usr/local/cuda-10.2/include

-D CUDNN_LIBRARY=/usr/local/cuda-10.2/lib64/libcudnn.so.8.0.4

-D WITH_VTK=ON

-D WITH_OPENCL=ON

-D OPENCV_SKIP_PYTHON_LOADER=ON

-D PYTHON_EXECUTABLE=~/anaconda3/bin/python3

-D PYTHON3_INCLUDE_DIR=~/anaconda3/include/python3.7m

-D PYTHON3_NUMPY_INCLUDE_DIRS=~/anaconda3/lib/python3.7/site-packages/numpy/core/include

-D PYTHON3_PACKAGES_PATH=~/anaconda3/lib/python3.7/site-packages

-D PYTHON3_LIBRARY=~/anaconda3/lib/libpython3.7.so

-D PYTHON_LIBRARIES=~/anaconda3/lib/python3.7 ..

※ 마지막의 .. 은 컴파일할 원본 소스의 경로이므로 꼭 입력하셔야 됩니다.

※옵션의 세부 경로는 각 컴퓨터 환경에 맞추어 진행하시기 바랍니다. 제 PC는 anaconda가 설치되어 있었기 때문에 python3을 따로 설치하지 않고 경로만 잡아주었습니다.

※ CUDNN 관련 문제가 발생했는데, CUDNN_VERSION=8.0을 넣어서 해결했습니다.

※ WITH_VTK는 안하셔도 됩니다. 저는 PC에 VTK가 이미 설치되어 있어서 ON으로 했습니다.



cmake-configuration 도중 오류가 발생할 경우



문제없이 cmake-configuration이 끝났을 경우여기까지 하면, Makefile이 만들어집니다. 윈도우즈 visual studio의 솔루션 파일이 생성된 것과 비슷합니다. 이제 진짜 컴파일을 합니다.

# j 뒤의 숫자는 CPU 코어 수를 의미합니다. 전체 코어 수의 20%만 사용해도 성능은 괜찮다고 합니다.

$ make -j4

$ sudo make install

마지막으로 $ sudo ldconfig 를 실행해서 공유 라이브러리를 다시 로드합니다.


5. 설치 결과 확인

python을 실행해서 아래와 같이 나오면 성공입니다.



답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다