1. 저장소 정보를 최신으로 맞추어 준다.
1) 시스템 업데이트
$ sudo apt update
2) 시스템 업그레이드.
$ sudo apt upgrade
3) 필요없는 패키지 제거
$ sudo apt autoremove
4) 기존 설치된 버전 제거
- 기존에 OpenCV를 설치한 적이 있는지 확인 (아래의 경우는 설치된 적이 없는경우)
$ pkg-config --modversion opencv
- 설치된 경우에는 설치된 버전이 표시된다.
특정버전이 표시된 경우 아래의 명령을 통해서 기존에 설치된 opencv를 제거해주어야 한다.
$ sudo apt-get purge libopencv* python-opencv
$ sudo apt-get autoremove
$ sudo find /usr/local/ -name "*opencv*" -exec rm {} \;
2. 패키지 설치
Opencv가 한번도 설치되지 않은경우를 제외하고 패키지를 삭제했다면
다시한번 시스템을 업데이트와 업그레이드를 한다.
$ sudo apt update
$ sudo apt upgrade
컴파일러 및 유틸리티등 빌드 및 향후 사용하게될 유틸리티와 라이브러리를 한번에 설치한다.
$ sudo apt install build-essential cmake git unzip
$ sudo apt install pkg-config libjpeg-dev libtiff5-dev libpng-dev
$ sudo apt install libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev
$ sudo apt install libxine2-dev libv4l-dev v4l-utils
$ sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
$ sudo apt install gstreamer1.0-gtk3 gstreamer1.0-plugins-good gstreamer1.0-plugins-bad
$ sudo apt install gstreamer1.0-plugins-ugly gstreamer1.0-gl
$ sudo apt install libgtk-3-dev libgtk2.0-dev libcanberra-gtk* libatlas-base-dev gfortran libeigen3-dev
$ sudo apt install python3-dev python3-numpy python3-pip
$ sudo apt install libtbb2 libtbb-dev libdc1394-22-dev libopenblas-dev libblas-dev
$ sudo apt install liblapack-dev libhdf5-dev libprotobuf-dev libgoogle-glog-dev
$ sudo apt install libgflags-dev protobuf-compiler libfreetype6-dev libharfbuzz-dev
3. OpenCV 빌드와 설치
1) 작업디렉터리 생성
$ cd ~
$ mkdir -p WORK/opencv
$ cd WORK/opencv
2) OpenCV 및 확장패키지 소스 다운로드
$ w get -O opencv.zip
https://github.com/opencv/opencv/archive/4.6.0.zip
$ w get -O opencv_contrib.zip
https://github.com/opencv/opencv_contrib/archive/4.6.0.zip
3) 압축해제
- 각각 압축파일을 풀어준다.
- sync 명령어는 시스템 버퍼에 있는 데이터를 디스크에 저장하는 명령어이다.
$ unzip opencv.zip
$ sync
$ unzip opencv_contrib.zip
$ sync
4) 빌드디렉터리 생성 - 빌드를 진행할 디렉터리를 만들어 주고 이동한다.
$ cd opencv-4.6.0
$ mkdir build
$ cd build
5) 파이선을 패키지 디렉터리 확인
$ python3 –m site
6) 빌드 설정 - cmake를 이용하여 빌드 환경을 설정한다.
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=OFF -D WITH_QT=OFF -D WITH_GTK=ON –D WITH_FREETYPE=ON -D WITH_OPENGL=ON -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.6.0/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 -D PYTHON3_PACKAGES_PATH=/usr/local/lib/python3.9/dist-packages ../
7) 스왑메모리 설정(확장)
라즈베리파이4 8GB를 사용하지 않는 경우 메모리 부족으로 빌드를 여러번 반복하거나 오류가 날 수 있다.
그래서 sd메모리 일부를 메모리로 사용할 수 있도록 설정한다.
① swap 설정파일 열기
$ sudo vi /etc/dphys-swapfile
② 설정변경
CONFSWAPSIZE 변수값을 100에서 2048로 설정후 저장하고 나온다.
③ 시스템을 재부팅하여 메모리 상태를 확인
free 명령을 입력하여 설정된 메모리 상태를 확인한다.
$ free
8) 빌드하기
$ time make -j4
- time는 작업시간이 나옴, -j4는 쿼드코어
9) 설치 및 ld등록
① 빌드가 완료되면 시스템에 설치한다.
$ sudo make install
② 등록
$ sudo ldconfig
10) 스왑메모리 (제거)
$ sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE 변수값을 다시 100으로 수정