본문 바로가기

머신러닝&딥러닝/YOLO

2. (YOLO) 라즈베리파이3에 OpenCV 3.2 설치

라즈베리파이3에서 YOLO를 설치하기 위해 OpenCV 3.2.0를 설치합니다.

기본 (default) OpenCV 제거


Raspbian에는 OpenCV가 기본적으로 제공됩니다. 우리는 OpenCV 3.2.0를 설치하기 때문에 기본적으로 설치되어있는 Opencv를 제거 합니다.


1
2
sudo apt-get remove libopencv*
sudo apt-get autoremove
cs

Prerequisites 설치


system update & upgrade

1
2
3
4
sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
sudo reboot
cs

개발자 도구 설치

1
sudo apt-get install build-essential cmake cmake-curses-gui pkg-config
cs

libraries 설치

이미지 처리/컴퓨터 비전 라이브리러인 JPEG, PNG, TIFF 파일 형식 로드를 위해 이미지 I/O 패키지를 설치합니다.
1
sudo apt-get install libjpeg-dev libjasper-dev libpng12-dev libtiff5-dev
cs

카메라 스트림으로 작업하고 비디오 파일을 처리 할 수 있도록 비디오 I/O 패키지를 설치합니다.
1
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libeigen3-dev libxvidcore-dev libx264-dev
cs


OpenCV의 GUI 작업을 위해 GTK 라이브러리를 설치합니다.
1
sudo apt-get install libgtk2.0-dev
cs

Install v4l library from repository & Enable the kernel module

1
2
sudo apt-get -y install libv4l-dev v4l-utils
sudo modprobe bcm2835-v4l2
cs

OpenCV 기능을 최적화 해주는 라이브러리를 설치합니다.

1
sudo apt-get install libatlas-base-dev gfortran
cs

Python 설치

Python 헤더와 라이브러리 설치합니다
Numpy는 매트릭스 연산 등을 빠르게 처리할 수 있어 OpenCV에서 사용됩니다.
1
2
sudo apt-get install python2.7-dev python-numpy
sudo apt-get install python3-dev python3-numpy
cs

OpenCV 설치


OpenCV 다운로드

1
2
3
4
mkdir /home/pi/opencv
cd  /home/pi/opencv
wget https://github.com/opencv/opencv/archive/3.2.0.zip -O opencv_source.zip
wget https://github.com/opencv/opencv_contrib/archive/3.2.0.zip -O opencv_contrib.zip
cs

opencv와 opencv_contrib의 버전은 같아야한다.

압축 풀기

1
2
3
cd /home/pi/opencv
unzip opencv_source.zip
unzip opencv_contrib.zip
cs

Build & Install OpenCV

working directory 생성

1
2
3
cd /home/pi/opencv/opencv-3.2.0
mkdir build
cd build
cs

Build 구성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D BUILD_WITH_DEBUG_INFO=OFF \
    -D BUILD_DOCS=OFF \
    -D BUILD_EXAMPLES=OFF \
    -D BUILD_TESTS=OFF \
    -D BUILD_opencv_ts=OFF \
    -D BUILD_PERF_TESTS=OFF \
    -D INSTALL_C_EXAMPLES=ON \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.2.0/modules \
    -D ENABLE_NEON=ON \
    -D WITH_LIBV4L=ON \
        ../
cs

OpenCV build

※ make -j4를 했을때 virtual memory exhausted: cannot allocate memory 에러가 뜰 수 있어 swap 파일 크기를 변경해줍니다.
1
sudo nano /etc/dphys-swapfile
cs

Raspbian 기본 값을 다음과 같이 변경해줍니다.
CONF_SWAPSIZE=100     (변경 전)
CONF_SWAPSIZE=1024    (변경 후)

서비스를 중지하고 다시 시작해줍니다.
1
2
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
cs

swap 양이 변경 되었는지 확인합니다.
1
free -m
cs

make 명령을 사용하여 컴파일을 시작합니다.
-j 뒤에 cpu 코어 수를 입력합니다. 
(사용 중인 컴퓨터의 cpu 코어수 확인법은 cat /proc/cpuinfo | grep processor | wc-; 입니다.

1
make -j4
cs

※ 컴파일하는데 오랜시간이 걸립니다.


Install OpenCV

컴파일한 결과를 설치합니다.

1
2
sudo make install
sudo ldconfig
cs