[한이음프로젝트] 라즈베리파이4 OpenCV 4.5.1 설치

2 분 소요

OpenCV(Open source Computer Vision)은 1999년 인텔의 게리 브래드스키가 개발을 시작해 2000년에 처음 공개된 C/C++ 기반의 영상 처리 전용 라이브러리로, 파이썬이나 C# 등의 다양한 언어를 지원하고 있다. OpenCV는 이미지 처리를 위한 라이브러리로 주로 실시간 이미지 처리를 위해서 사용된다.

1. 기존 OpenCV 버전 제거

opencv 이전 버전이 설치되어 있으면 제대로 동작하지 않기 때문에 제거해야 한다.

python
import cv2

다음 코드를 cmd창에 입력했을 때 오류가 나지 않으면 opencv가 설치되어 있는 것이다.

sudo apt-get purge libopencv* python-opencv
sudo apt-get autoremove

다음 명령으로 OpenCV 라이브러리 설정 파일을 포함해 기존에 설치된 OpenCV 패키지를 삭제하고 진행해야 한다.

sudo find /usr/local/ -name "*opencv*" -exec rm {} \;

opencv 라이브러리 삭제

2. 기존 설치된 패키지 업그레이드

sudo apt-get update
sudo apt-get upgrade
sudo reboot

기존에 설치된 패키지들을 업그레이드 해준다. 이 과정은 파이썬 최신버전을 설치할 때 했던 과정과 동일하다. 그리고 재부팅 해준다.

3. OpenCV 컴파일 전 필요한 패키지 설치

$ sudo apt-get install build-essential cmake

build-essential 패키지는 C/C++ 컴파일러와 관련 라이브러리, make 같은 도구들이 포함.

cmake는 컴파일 옵션이나 빌드된 라이브러리에 포함시킬 OpenCV 모듈 설정등을 위해 필요.

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

특정 포맷의 이미지 파일을 불러오거나 저장하기 위해 필요한 패키지들.

$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev

특정 코덱의 비디오 파일/스트리밍을 읽어오거나 기록하기 위해 필요한 FFmpeg 관련 패키지들.

$ sudo apt-get install libv4l-dev v4l-utils

Video4Linux 패키지는 리눅스에서 실시간 비디오 캡처를 지원하기 위한 디바이스 드라이버와 API를 포함.

$ sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly

특정 코덱의 비디오 파일/스트리밍을 읽어오거나 기록하기 위해 필요한 GStreamer 관련 패키지들.

$ sudo apt-get install libgtk2.0-dev

OpenCV에서는 highgui 모듈을 사용하여 자체적으로 윈도우 생성하여 이미지나 영상을 보여줌.

윈도우 생성 등의 GUI를 위해 gtk 또는 qt를 선택해서 사용가능.

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

OpenGL 지원하기 위해 필요한 라이브러리.

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

OpenCV 최적화를 위해 사용되는 라이브러리들.

$ sudo apt-get install python2.7-dev python3-dev python-numpy python3-numpy

python2.7-dev와 python3-dev 패키지는 파이썬을 위한 헤더파일과 라이브러리가 포함된 패키지들.

Numpy는 매트릭스 연산등을 빠르게 처리할 수 있어서 OpenCV Python에서 사용.

4. OpenCV 설정과 컴파일 및 설치

mkdir opencv
cd opencv

opencv라는 이름의 디렉토리를 생성 후 이동.

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

opencv 4.5.1 소스코드를 다운받아 압축을 풉니다.

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

opencv_contrib(extra modules) 소스코드를 다운로드 받아 압축을 풉니다.

SURF 등을 사용하기 위해 필요합니다.

cd opencv-4.5.1
mkdir build
cd build

opencv-4.5.1 디렉토리로 이동해 build 디렉토리를 만들고 이동.

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=OFF -D WITH_IPP=OFF -D WITH_1394=OFF -D BUILD_WITH_DEBUG_INFO=OFF -D BUILD_DOCS=OFF -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D ENABLE_NEON=ON -D ENABLE_VFPV3=ON -D WITH_QT=OFF -D WITH_GTK=ON -D WITH_OPENGL=ON -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.5.1/modules -D WITH_V4L=ON -D WITH_FFMPEG=ON -D WITH_XINE=ON -D ENABLE_PRECOMPILED_HEADERS=OFF -D BUILD_NEW_PYTHON_SUPPORT=ON -D OPENCV_GENERATE_PKGCONFIG=ON ../

cmake를 사용하여 OpenCV 컴파일 설정을 해줍니다. 복사해서 터미널에 붙여넣기 해주면 됩니다.

$ sudo nano /etc/dphys-swapfile

스왑 공간을 늘려 멀티코어를 사용해 컴파일 시 메모리 부족으로 에러가 나는 것을 방지합니다. CONF_SWAPSIZE 변수값을 100에서 2048로 수정합니다.

# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
# CONF_SWAPSIZE=100
CONF_SWAPSIZE=2048
$ sudo /etc/init.d/dphys-swapfile restart
$ free
$ time make -j4

make명령어를 사용해 컴파일을 시작. 1시간정도 걸립니다.

$ sudo make install

컴파일 결과물을 설치합니다.

 $ sudo ldconfig

opencv 라이브러리를 찾을 수 있도록 합니다.

$ sudo nano /etc/dphys-swapfile

스왑 공간을 다시 100으로 수정합니다.

# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
CONF_SWAPSIZE=100
$ sudo /etc/init.d/dphys-swapfile restart
$ free

opencv 설치가 완료됩니다.