일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 경제 공부
- Raspberry Pi
- 코딩 테스트
- exponential mapping
- logarithm mapping
- C++
- 코딩테스트
- 부자 아빠 가난한 아빠
- PointNet++
- 코딩테스트 공부
- PointNet
- TURTLEBOT3
- deformable KPConv
- rigid KPConv
- KPConv
- ros2
- 입문 Visual SLAM
- OpenCV
- 백준 1253번
- Docker
- 2 포인터 알고리즘
- 논문 리뷰
- point cloud
- IMAGE
- OpenCV 모듈
- SLAMKR
- visual slam
- FeatureMatching
- 제 6장
- Slam
- Today
- Total
꿈꾸는 개발자
Raspberry pi 3 B+ OpenCV 3.4.0 설치 본문
구글링을 해보면 컴퓨터 Ubuntu 18.04 에 OpenCV 를 설치하는 것은 많이 있으나 Raspberry pi 에 OpenCV 를 설치하는 글은 많이 없는 것 같아서 작성해보려고 합니다.
정말 많은 오류와 시간이 걸렸습니다.ㅠㅠ
※ 주의할 점 : 중간에 pi@raspberrypi 와 root@raspberrypi 는 다른 것이므로 잘 확인해서 명령어 입력하길 바랍니다.
pi@raspberrypi : 도커 컨테이너 밖
root@raspberrypi : 도커 컨테이너 안
환경
- Raspberry pi OS
- Raspberry pi 3 B+
- Docker (Ubuntu 18.04 + ROS2 dashing)
Docker 를 이용해 Raspberry pi 3 에 Ubuntu 18.04 + Ros2 dashing 이 설치되어있는 이미지를 받고 실행했다는 가정 하에 설명하겠습니다.
혹시 해당 이미지를 사용하고 싶다면, 아래 링크를 참조하시길 바랍니다.
https://developer-for-dream.tistory.com/7
root@raspberrypi:~ $ apt update
root@raspberrypi:~ $ apt upgrade
컨테이너 안에서 저의 경우 root 권한이었기 때문에 sudo 를 사용하지 않았습니다.
필요한 분은 sudo 명령어를 붙이시길 바랍니다.
아래는 openCV 컴파일에 필요한 것들을 설치하는 작업입니다.
$ apt-get install build-essential cmake
$ apt-get install cmake
$ apt-get install pkg-config
$ apt-get install libpng12-dev
$ apt-get install libjpeg-dev
$ apt-get install libtiff5-dev
$ apt-get install libjasper-dev
저는 이 부분에서 설치할 때 libpng12-dev 와 libjasper-dev 에서 오류가 떴습니다.
libpng12-dev 오류의 경우는 libpng-dev 로 변경하여 설치하면 됩니다.
libjasper-dev 오류의 경우(이것 때문에 꽤 많은 시간이 걸렸습니다...)
구글링을 해본 결과 ubuntu 16.04 이후 사라졌다고 나와있는 것 같습니다.
그래서 add-apt-repository 라는 명령어로 16.04 에 있는 것을 가져와줘야 합니다.
먼저 add-apt-repository 를 설치하겠습니다.
$ apt-get install software-properties-common
그 후에 Xenial(16.04) 에서 libjasper-dev 를 가져와야 하는데, 일반 컴퓨터의 Ubuntu 18.04 가 아닌 라즈베리파이의 Ubuntu 18.04 이기 때문에 다른 주소를 사용해야 합니다.
해당되는 하드웨어에 맞게 사용하세요
일반 컴퓨터
$ add-apt-repository "deb http://xenial-security.ubuntu.com/ubuntu xenial-security main"
raspberry pi
$ add-apt-repository "deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main"
apt repository 에 추가했다면 apt update 를 진행해줍니다.
$ apt update
$ apt-get install libjasper-dev
libjasper-dev 가 설치되었을 겁니다.
추가적으로 계속 openCV 컴파일에 필요한 것을 설치하겠습니다.
$ apt-get install libavformat-dev
$ apt-get install libxvidcore-dev
$ apt-get install libswscale-dev
$ apt-get install libxine2-dev
$ apt-get install libavcodec-dev
$ apt-get install libx264-dev
$ apt-get install libv4l-dev
$ apt-get install v4l-utils
$ apt-get install libgstreamer1.0-dev
$ apt-get install libgstreamer-plugins-base1.0-dev
$ apt-get install libqt4-dev
$ apt-get install mesa-utils
$ apt-get install libgl1-mesa-dri
$ apt-get install libqt4-opengl-dev
$ apt-get install libatlas-base-dev
$ apt-get install gfortran
$ apt-get install libeigen3-dev
$ apt-get install python2.7-dev
$ apt-get install python3-dev
$ apt-get install python-numpy
$ apt-get install python3-numpy
※ 단, 여기서 주의할 점은 python3 의 버전을 잘 확인 해두길 바랍니다. (python3 --version)
이제 openCV 를 가져오도록 하겠습니다.
wget 명령어와 unzip 명령어를 먼저 설치해줍니다.
$ apt install wget
$ apt install unzip
폴더 파일을 만들고 openCV 3.4 를 받아줍니다.
root@raspberrypi:~ $ mkdir opencv
root@raspberrypi:~ $ cd opencv
root@raspberrypi:~/opencv $ wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.0.zip
root@raspberrypi:~/opencv $ unzip opencv.zip
root@raspberrypi:~/opencv $ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.0.zip
root@raspberrypi:~/opencv $ unzip opencv_contrib.zip
압축을 풀어준 후 잘 받아졌는지 확인해봅시다.
root@raspberrypi:~/opencv $ ls -d */
출력 :
opencv-3.4.0 opencv_contrib-3.4.0
build 폴더를 만들고
root@raspberrypi:~/opencv $ cd opencv-3.4.0
root@raspberrypi:~/opencv/opencv-3.4.0 $ mkdir build
root@raspberrypi:~/opencv/opencv-3.4.0 $ cd build
root@raspberrypi:~/opencv/opencv-3.4.0/build $
cmake 를 실행하기 위한 파라미터들을 설정해줍시다.
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
라즈베리파이 백슬래쉬가 입력이 되지 않는다면 아래 링크에서 설정을 변경하길 바랍니다.
https://developer-for-dream.tistory.com/2
※ 주의할 점 : 위에서 python3 --version 했을 때 나오는 python3 버전을 아래 명령어에서 수정해줍니다.
(python3 버전이 3.7 인경우) :
-D PYTHON3_INCLUDE_DIR=/usr/include/python3.7m \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include/ \
-D PYTHON3_PACKAGES_PATH=/usr/lib/python3.7/dist-packages \
-D PYTHON3_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=OFF \
-D WITH_IPP=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 WITH_QT=ON \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.0/modules \
-D WITH_V4L=ON \
-D WITH_FFMPEG=ON \
-D WITH_XINE=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D PYTHON2_INCLUDE_DIR=/usr/include/python2.7 \
-D PYTHON2_NUMPY_INCLUDE_DIRS=/usr/lib/python2.7/dist-packages/numpy/core/include/ \
-D PYTHON2_PACKAGES_PATH=/usr/lib/python2.7/dist-packages \
-D PYTHON2_LIBRARY= /usr/lib/arm-linux-gnueabihf/libpython2.7.so \
-D PYTHON3_INCLUDE_DIR=/usr/include/python3.5m \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include/ \
-D PYTHON3_PACKAGES_PATH=/usr/lib/python3.5/dist-packages \
-D PYTHON3_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.5m.so \
../
cmake 를 이용해 컴파일을 해줍니다.
root@raspberrypi:~/opencv/opencv-3.4.0/build $ make -j4
make 뒤에 -j4 의 경우 CPU 코어 개수를 얼마큼 사용할지 정하는 겁니다. 만약 -j4 나 -j3 을 했는데도 오류가 발생한다면 -j 명령어를 없앤 뒤 make 명령어만을 사용해서 빌드하길 바랍니다.(빌드 시간이 꽤 오래 걸립니다. 약 2시간)
만약, make 명령어만을 사용했는데도 불구하고 오류가 뜬다면 메모리 문제일 확률이 제일 높습니다.
메모리 부족 문제를 해결하기 위해 swapfile 을 만들어줍시다.
단, swapfile 은 이미지 위가 아닌 호스트에서 생성해야 합니다.
pi@raspberrypi:~ $ sudo swapoff -a
pi@raspberrypi:~ $ sudo dd if=/dev/zero of=/swapfile bs=1M count=2000
pi@raspberrypi:~ $ sudo mkswap /swapfile
pi@raspberrypi:~ $ sudo swapon /swapfile
pi@raspberrypi:~ $ grep SwapTotal /proc/meminfo
다시 make 명령어로 빌드해줍니다.
출력 :
root@raspberrypi:~/opencv/opencv-3.4.0/build $
빌드까지 성공했다면 거의 다 끝났습니다.
root@raspberrypi:~/opencv/opencv-3.4.0/build $ make install
root@raspberrypi:~/opencv/opencv-3.4.0/build $ cat /etc/ld.so.conf.d/*
출력 중에서 /usr/local/lib 가 포함되어있다면 완료된 겁니다.
만약 /usr/local/lib 가 출력되지 않는다면
root@raspberrypi:~/opencv/opencv-3.4.0/build $ sh -c 'echo '/usr/local/lib' > /etc/ld.so.conf.d/opencv.conf'
root@raspberrypi:~/opencv/opencv-3.4.0/build $ ldconfig
이제 OpenCV 3.4.0 설치는 완료했습니다. 잘 설치가 되었는지 확인해봅시다.
root@raspberrypi:~/opencv/opencv-3.4.0/build $ python
>>>import cv2
>>>cv2.__version__
'3.4.0'
>>>
설치가 완료되었다면 메모리 확보를 위해
root@raspberrypi:~/opencv/opencv-3.4.0/build $ cd ~
root@raspberrypi:~ $ rm -rf opencv
openCV 폴더를 삭제해줍니다. (끝!)
라즈베리파이에 openCV 설치를 진행했습니다. 도커 이미지를 이용했기 때문에 여기서 메모리가 확보된다면 docker commit 명령어를 통해 이미지로 만들어서 배포도 가능합니다.
추가적인 오류가 있거나 제대로 진행되지 않는 경우 댓글을 남겨주시면 최대한 알려드리도록 하겠습니다.
감사합니다.
'Raspberry pi' 카테고리의 다른 글
Raspberry pi OS 고정 IP 할당(Static IP) (0) | 2021.12.29 |
---|---|
Raspberry pi 3 wifi 설정 (0) | 2021.12.29 |
Raspberry pi OS server 키보드 입력 방식 변경 (4) | 2021.12.29 |