얼마전에 Ubuntu 18.04 LTS 버전이 나왔습니다. 그래서 오늘은 Ubuntu 18.04 에서 OpenCV 최신 버전을 설치하는 방법에 대해 알아보도록 하겠습니다. 예전에 라즈베리파이에서 OpenCV를 설치하는 방법을 설명한 적이 있었는데요, 거기서 크게 다르지 않습니다.


일단 저는 Virtual Box를 이용하여 가상 머신 형태로 리눅스 우분투 18.04를 설치를 했구요, 여기에 OpenCV 3.4.0 버전을 설치하겠습니다. (참고로 CPU 코어는 2개를 할당했습니다.) 모두 5개의 Step으로 설치를 설명하고, 실제 OpenCV C++ 예제 코드를 빌드하여 실행하는 방법까지 알아보겠습니다. 각각의 Step에서 #으로 시작하는 내용은 설명을 의미하고, 실제 입력할 명령어는 $ 으로 표기하였습니다.


Step 1. 가장 먼저 리눅스를 최신 상태로 업데이트합니다.

# Optional. Ubuntu 18.04에서 libjasper-dev 패키지를 설치하기 위해서 저장소를 추가해야 합니다.
$ sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"

$ sudo apt update
$ sudo apt upgrade

# Optional. Ubuntu 18.04 설치 후 추가적으로 필요한 코덱, 미디어 라이브러리를 설치합니다.
$ sudo apt install ubuntu-restricted-extras


Step 2. 필요한 패키지를 설치합니다.

# Build tools & required
$ sudo apt install build-essential cmake git pkg-config

# For still images
$ sudo apt install libjpeg-dev libtiff5-dev libjasper-dev libpng-dev

# For videos
$ sudo apt install libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt install libdc1394-22-dev libxvidcore-dev libx264-dev x264
$ sudo apt install libxine2-dev libv4l-dev v4l-utils
$ sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

# GUI
$ sudo apt install libgtk-3-dev

# Optimization, Python3, etc.
$ sudo apt install libatlas-base-dev libeigen3-dev gfortran
$ sudo apt install python3-dev python3-numpy libtbb2 libtbb-dev


Step 3. OpenCV 3.4.0 소스 코드를 다운로드합니다.

# Create a working directory named opencv
$ cd ~
$ mkdir opencv
$ cd opencv

# Download sources
$ wget -O opencv-3.4.0.zip https://github.com/opencv/opencv/archive/3.4.0.zip
$ wget -O opencv_contrib-3.4.0.zip https://github.com/opencv/opencv_contrib/archive/3.4.0.zip

# Unpack
$ unzip opencv-3.4.0.zip
$ unzip opencv_contrib-3.4.0.zip


Step 4. CMake를 이용하여 Makefile을 생성합니다.

# Create a build directory
$ mkdir build && cd build

# Run CMake
$ cmake \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D BUILD_WITH_DEBUG_INFO=OFF \
-D BUILD_EXAMPLES=ON \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.0/modules \
-D WITH_TBB=ON \
-D WITH_V4L=ON \
../opencv-3.4.0/ 2>&1 | tee cmake_messages.txt


Step 5. 컴파일과 설치를 진행합니다.

# find out the number of CPU cores in your machine
$ nproc

# substitute 2 after -j by the output of nproc
$ make -j2 2>&1 | tee build_messages.txt
$ sudo make install
$ sudo ldconfig

# If the output of next command is '3.4.0' then it's ok!
$ pkg-config --modversion opencv


여기까지 설치가 잘 진행되었으면 이제 OpenCV 예제 프로그램을 만들어서 정상적으로 동작하는지를 확인해보겠습니다. 일단 홈디렉토리 아래에 ~/coding/HelloCV 라는 디렉토리를 만들고, 그 안에 HelloCV.cpp 파일을 아래와 같이 작성합니다.


#include "opencv2/opencv.hpp"
#include <iostream>

using namespace cv;
using namespace std;

int main(void)
{
        Mat img = imread("lena.jpg");

        if (img.empty()) {
                cerr << "Image load failed!" << endl;
                return -1;
        }

        namedWindow("image");
        imshow("image", img);
        waitKey(0);
        return 0;
}


그리고 위 소스 코드를 빌드하기 위한 Makefile 파일을 아래와 같이 생성합니다. 아래 코드에서 들여쓰기(인덴트)는 스페이스가 아니라 탭(tab)입니다.


CC = g++
CFLAGS = -g -Wall
SRCS = HelloCV.cpp
PROG = HelloCV

OPENCV = `pkg-config opencv --cflags --libs`
LIBS = $(OPENCV)

.PHONY: all clean

$(PROG):$(SRCS)
    $(CC) $(CFLAGS) -o $(PROG) $(SRCS) $(LIBS)

all: $(PROG)

clean:
    rm -f $(OBJS) $(PROG)


위와 같이 입력하고, $ make 명령어를 입력하면 HelloCV 라는 이름의 실행 파일이 생성됩니다. 그러므로 $ ./HelloCV 라고 명령어를 입력하면 프로그램이 실행되는데요.. 에러만 출력되고 종료됩니다. 왜냐하면 테스트로 사용하는 lena.jpg 파일이 없어서죠. 그러므로 opencv 소스 코드에 포함되어 있는 lena.jpg 파일을 현재 폴더로 복사합니다.

$ cp ~/opencv/opencv-3.4.0/samples/data/lena.jpg .


그리고 다시 $ ./HelloCV 명령을 입력합니다. 그러면 아래 그림처럼 lena 영상이 화면에 나타납니다. 


참 쉽죠? :-)

Posted by kkokkal
: