라즈베리파이 4/400에 OpenCV를 설치하는 방법을 정리해둔다. 최근 이미지를 기록하고난 다음 OpenCV를 설치하니 이런저런 문제가 있어서 작성하는데 조금 시간이 걸렸다. 어쨋거나 정리해두면 필요한 독자들에게 도움이 될테니까.. 그리고 필자도 필요하기도 하고...
--- 목차 ----------
[현재 글] 라즈베리파이 4/400 OpenCV 4.6.0 설치 : https://makeutil.tistory.com/207
2. 이미지 파일 출력 (png, jpg, bmp) : https://makeutil.tistory.com/212
3. 웹카메라를 이용한 영상 출력 : https://makeutil.tistory.com/220
4. 웹카메라를 이용한 영상 저장 : https://makeutil.tistory.com/221
5. 웹카메라로 저장한 미디어파일(.mp4) 출력 : https://makeutil.tistory.com/222
--------------------
1. 준비하기
본 문서는 라즈베리파이 4와 400을 기준으로 작성되었다. 그리고 메모리카드는 16GB이상의 메모리를 사용할 것을 권장한다. 가능하면 기록속도가 빠른 MicroSD나 USB 제품으로 하는게 빌드할 때 스트레스를 줄여준다.
라즈베리파이 부트 이미지는 아래의 문서를 참고한다.
- 라즈베리파이 OS 설치하기 : https://makeutil.tistory.com/142
1.1. 시스템 업데이트
저장소 정보를 최신으로 맞춰준다.
$ sudo apt update
1.2. 시스템 업그레이드.
$ sudo apt upgrade
1.3. 필요없는 패키지 제거
$ sudo apt autoremove
1.4. 기존 설치된 버전 제거
1) 기존에 OpenCV를 설치한 적이 있는지 확인 (아래의 경우는 설치된 적이 없는경우)
$ pkg-config --modversion opencv
2) 설치된 경우
설치된 경우에는 설치된 버전이 표시된다. 특정버전이 표시된 경우 아래의 명령을 통해서 기존에 설치된 opencv를 제거해주어야 한다.
$ sudo apt-get purge libopencv* python-opencv
$ sudo apt-get autoremove
$ sudo find /usr/local/ -name "*opencv*" -exec rm {} \;
2. 패키지 설치
Opencv가 한번도 설치되지 않은경우를 제외하고 패키지를 삭제했다면 다시한번 시스템을 업데이트 한다.
2.1. 패키지 업데이트 및 업그레이드
$ sudo apt update
$ sudo apt upgrade
2.2. 관련 패키지 설치
컴파일러 및 유틸리티등 빌드 및 향후 사용하게될 유틸리티와 라이브러리를 한번에 설치한다.
$ sudo apt install build-essential cmake git unzip pkg-config libjpeg-dev libtiff5-dev libpng-dev libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev libv4l-dev v4l-utils libgstreamer1.0-dev gstreamer1.0-gtk3 libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-gl libgtk-3-dev libgtk2.0-dev libcanberra-gtk* libatlas-base-dev gfortran libeigen3-dev python3-dev python3-numpy python3-pip libtbb2 libtbb-dev libdc1394-22-dev libopenblas-dev libatlas-base-dev libblas-dev liblapack-dev gfortran libhdf5-dev libprotobuf-dev libgoogle-glog-dev libgflags-dev protobuf-compiler vim nano libfreetype6-dev libharfbuzz-dev
2.3. 설치진행
y를 입력하여 설치를 진행한다. 설치속도는 MicroSD카드와 네트워크 상태에 따라 달라진다.
3. OpenCV 빌드와 설치
앞서 준비가 완료되었으면 이제 소스를 받아 빌드하고 설치를 진행한다.
3.1. 작업디렉터리 생성
$ cd ~
$ mkdir opencv
$ cd opencv
3.2. OpenCV 및 확장패키지 소스 다운로드
github에서 다운로드 받거나 아래와 같이 wget을 통해 받을 수 있다.
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.6.0.zip
$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.6.0.zip
3.3. 압축해제
각각 압축파일을 풀어주자.
$ unzip opencv.zip
$ sync
$ unzip opencv_contrib.zip
$ sync
3.4. 빌드디렉터리 생성
빌드를 진행할 디렉터리를 만들어 주고 이동한다.
$ mkdir build
$ cd build
3.5. 파이선을 패키지 디렉터리 확인
$ python3 –m site
3.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 ../
3.7. 스왑메모리 설정(확장)
라즈베리파이4 8GB를 사용하지 않는 경우 메모리 부족으로 빌드를 여러번 반복하거나 오류가 날 수 있다. 그래서 sd메모리 일부를 메모리로 사용할 수 있도록 설정한다.
1) swap 설정파일 열기 (nano또는 vim을 이용)
$ sudo vim /etc/dphys-swapfile
2) 설정변경
CONFSWAPSIZE 변수값을 100에서 2048로 설정후 저장하고 나온다.
3) 시스템을 재부팅하여 메모리 상태를 확인
아래의 명령을 입력하여 설정된 메모리 상태를 확인한다.
pi@raspberrypi:~/opencv/opencv-4.6.0/build $ free total used free shared buff/cache available Mem: 3930860 181864 109168 36872 3639828 3551788 Swap: 2097148 0 2097148 |
3.8. 빌드
$ time make -j4
3.9. 설치 및 ld등록
1) 설치
빌드가 완료되면 시스템에 설치해주자.
$ sudo make install
2) 등록
$ sudo ldconfig
3.10. 스왑메모리 (제거)
$ sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE 변수값을 다시 100으로 수정
다음과 같은 순서로 진행하면 오류없이 라즈베리파이4/400에 OpenCV를 설치할 수 있다. 여기까지 설치가 되었다면 이제 테스트를 해야되는데... 카메라가 안보인다. 그래서 테스트는 이후 샘플코드 업데이트를 통해서 계속 진행하고자한다. 어느정도 진행되면 QT5에서 OpenCV를 통해서 연결하고 QT기반에서 테스트 샘플을 계속 만들예정이다. 물론, 만든 기본 샘플은 문서화하여 업데이트 할 예정이다.
본 문서가 조금이라도 독자들에게 도움이 되었길..
최근댓글