728x90
환경
환경은 다음과 같습니다.
cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
uname -a
Linux raspberrypi 5.4.59-v7+ #1336 SMP Wed Aug 19 16:03:09 BST 2020 armv7l GNU/Linux
설치
라즈베리파이에 기본으로 설치되어 있는 OpenCV2 를 제거하고 의존성 패키지까지 정리합니다.
sudo apt-get remove libopencv*
sudo apt-get autoremove
APT Repository 를 업데이트합니다.
sudo apt-get update
sudo apt-get upgrade
OpenCV 를 위한 영상처리 관련 패키지를 설치합니다.
한 줄씩 복사해서 실행합니다.
sudo apt-get install build-essential cmake cmake-curses-gui pkg-config
sudo apt-get install libjpeg-dev libjasper-dev libpng12-dev libtiff5-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libeigen3-dev libxvidcore-dev libx264-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install libv4l-dev v4l-utils
메모리 오류 방지를 위해 Swap 파일 크기를 변경합니다.
/etc/dphys-swapfile
# CONF_SWAPSIZE=100
CONF_SWAPSIZE=1024
Swap 관련 서비스 재시작
sudo /etc/init.d/dphys-swapfile restart
메모리 보는 명령어
free -m
total used free shared buff/cache available
Mem: 874 48 564 0 261 760
Swap: 1023 115 908
4.1.2 버전 압축파일을 다운로드하고 압축을 해제합니다.
wget https://github.com/opencv/opencv/archive/4.1.2.zip -O opencv4.zip
wget https://github.com/opencv/opencv_contrib/archive/4.1.2.zip -O opencv4_contrib.zip
unzip opencv4.zip
unzip opencv4_contrib.zip
압축을 해제한 디렉터리명을 확인하고
ls
opencv-4.1.2 opencv4_contrib.zip opencv4.zip opencv_contrib-4.1.2
해당 디렉터리로 이동해서 build 디렉터리를 생성합니다.
cd opencv-4.1.2
mkdir build
다음 구성으로 빌드를 시작합니다.
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=OFF \
-D WIDTH_IPP=OFF \
-D BUILD_1394=OFF \
-D BUILD_WITH_DEBUG_INFO=OFF \
-D BUILD_DOCS=FF \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_PERF_TESTS=OFF \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D WITH_QT=OFF \
-D WITH_QTK=ON \
-D WITH_OPENGL=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPEN_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.2/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 ..\
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/opencv/opencv-4.1.2/build
컴파일을 시작합니다.
time make -j4
완료하면 다음과 같이 출력되며, 166 분이 걸렸습니다.
[100%] Built target opencv_python2
real 166m56.009s
user 399m51.650s
sys 15m6.475s
오랫동안 멈춤 현상이 있는 경우에는 Ctrl + C 로 중지하고, 다시 make 하면 이어서 진행을 완료할 수 있습니다.
컴파일한 결과를 설치합니다.
sudo make install
...
-- Installing: /usr/local/share/opencv4/samples/python/squares.py
-- Installing: /usr/local/share/opencv4/samples/python/stereo_match.py
-- Installing: /usr/local/share/opencv4/samples/python/stitching.py
-- Installing: /usr/local/share/opencv4/samples/python/stitching_detailed.py
-- Installing: /usr/local/share/opencv4/samples/python/texture_flow.py
-- Installing: /usr/local/share/opencv4/samples/python/tst_scene_render.py
-- Installing: /usr/local/share/opencv4/samples/python/turing.py
-- Installing: /usr/local/share/opencv4/samples/python/video.py
-- Installing: /usr/local/share/opencv4/samples/python/video_threaded.py
-- Installing: /usr/local/share/opencv4/samples/python/video_v4l2.py
-- Installing: /usr/local/share/opencv4/samples/python/watershed.py
OpenCV 라이브러리 적용합니다.
sudo ldconfig
Swapfile 설정을 다시 복구합니다.
/etc/dphys-swapfile
CONF_SWAPSIZE=100
# CONF_SWAPSIZE=1024
free -m
total used free shared buff/cache available
Mem: 874 142 443 13 288 665
Swap: 99 0 99
리눅스에서 사용할 수 있게 디바이스 파일이 생겼는지 확인합니다.
ls /dev/video*
파이 카메라의 경우에는 다음 명령어로 모듈을 추가하여 장치를 생성합니다.
sudo modprobe bcm2835-v4l2
확인해봅니다.
$ pkg-config --modversion opencv4
4.1.2
파이썬2 와 파이썬3 에도 모듈을 import 합니다.
$ python
Python 2.7.16 (default, Oct 10 2019, 22:02:15)
[GCC 8.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.1.2'
$ python3
Python 3.7.3 (default, Jul 25 2020, 13:03:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.1.2'
참고
워낙 오래걸리고 실패할 확률이 높습니다.
안되시는 분은 제가 참고한 아래 링크로 가서 차근차근 따라해보세요.
'IoT > Raspberry Pi' 카테고리의 다른 글
라즈베리파이(Raspberry Pi) Tensorflow Lite 설치 : Object Detection (0) | 2020.08.23 |
---|---|
라즈베리파이(Raspberry Pi) YOLO 설치 : Object Detection (12) | 2020.08.23 |
라즈베리파이(Raspberry Pi) 윈도우에서 GUI 원격 접속 (0) | 2020.08.22 |
라즈베리파이(Raspberry Pi) 카메라모듈로 실시간 스트리밍(CCTV) 하기 (1) | 2020.08.20 |
라즈베리파이(Raspberry Pi) USB 마이크 사용하기 (0) | 2020.08.03 |