공부/컴퓨터공학 (CS)

라즈베리파이에 openCV 설치하기

leehe228 2018. 6. 9. 15:11
728x90
728x90

<본 포스팅의 정보는 약 2~3년 전의 정보이므로 현재 리눅스 버전에서 오류 혹은 막힘이 발생할 수 있습니다.>

 

안녕하세요. 캔위성 대회에서 사용하기 위해 openCV를 라즈베리파이에 설치했습니다. 설치 과정을 찾아봐도 매우 복잡하고 계속 오류가 떠서 외국 지문들과 포럼들을 찾아 어렵게 설치했습니다. 

 

여러분들의 수고를 덜어드리기 위해서 직접 정리해서 올려드리려고 합니다.

천천히 잘 따라오시면 openCV를 설치하실 수 있을 겁니다.

 

pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get upgrade

 

위 명령어를 입력해 라즈베리파이에 설치된 패키지와 OS를 최신으로 유지합니다.

 

다음으로 openCV를 컴파일 하는 과정에서 꼭 필요한 것들을 설치할 것입니다.

 

$ sudo apt-get install build-essential cmake

 

build-essential 패키지에는 C++ 컴파일러 및 make 명령어를 사용할 수 있게 해주는 기능이 들어있습니다. 위 명령어로 설치합니다.

 

$ sudo apt-get install cmake

 

cmake는 openCV 모듈을 설정할 때 사용합니다.

 

$ sudo apt-get install pkg-config

 

pkg-config는 프로그램을 컴파일하거나 링크할 때 필요한 라이브러리 정보를 메타파일로 받아옵니다.

 

$ sudo apt-get install libpng12-dev 
$ sudo apt-get install libjpeg-dev 
$ sudo apt-get install libtiff5-dev 
$ sudo apt-get install libjasper-dev

 

jpeg 및 png와 같은 다양한 이미지 파일 포맷을 불러오거나 새로 기록할 떄 필요한 패키지입니다.

패키지 이름을 정확히 보여드리기 위해서 따로 적었습니다. 

 

$ sudo apt-get installlibpng12-dev libjpeg-dev libtiff5-dev libjasper-dev

(위 블록과 같은 내용의 명령어입니다.)

 

위와 같이 한꺼번에 설치할 수도 있습니다. 하지만 오타가 날 확률이 굉장히 크기 때문에 따로 설치하여 어떤 패키지에서 오류가 발생하였는지 확인하기 쉽게 따로 설치하거나 2개 정도의 패키지를 같이 설치하는 것을 추천드립니다.

 

$ sudo apt-get install libavformat-dev 
$ sudo apt-get install libxvidcore-dev 
$ sudo apt-get install libswscale-dev 
$ sudo apt-get install libxine2-dev 
$ sudo apt-get install libavcodec-dev 
$ sudo apt-get install libx264-dev

 

비디오 파일을 기록하고 읽어올 때 사용합니다.

 

$ sudo apt-get install libv4l-dev 
$ sudo apt-get installv4l-utils

 

위 패키지는 리눅스 기반 운영체제에서 실시간으로 비디오를 캡쳐할 때 사용하는 디바이스 드라이버와 API를 포함합니다.

 

$ sudo apt-get install libgstreamer1.0-dev 
$ sudo apt-get install libgstreamer-plugins-base1.0-dev

 

위 패키지는 비디오를 스트리밍 할 때 필요한 라이브러리입니다.

 

$ sudo apt-get install libqt4-dev

 

highgui 모듈로 새로운 창으로 이미지 및 비디오를 재생합니다.

 

$ sudo apt-get install mesa-utils 
$ sudo apt-get install libgl1-mesa-dri 
$ sudo apt-get install libqt4-opengl-dev

 

openGL를 사용할 때 최적화를 돕는 모듈들입니다.

 

$ sudo apt-get install libatlas-base-dev 
$ sudo apt-get install gfortran 
$ sudo apt-get install libeigen3-dev

 

openCV를 사용할 때 최적화를 돕는 모듈들입니다.

 

$ sudo apt-get install python2.7-dev 
$ sudo apt-get install python3-dev 
$ sudo apt-get install python-numpy 
$ sudo apt-get install python3-numpy

 

python2.7-dev와 python3-dev 패키지는 파이썬 바인딩을 위해 필요하며 연산과 다양한 수식을 사용할 수 있게 해주는 numpy 모듈을 python 2.7 버전과 3 버전에 맞게 설치해줍니다.

 

위 설치과정이 모두 끝났다면 본격적으로 openCV를 다운받아 줍시다.

 

명령어 :

pi@raspberrypi:~ $ mkdir opencv 
pi@raspberrypi:~ $ cd opencv

출력 결과 : 

pi@raspberrypi:~/opencv $

 

openCV 소스파일을 설치할 임시폴더를 생성하여 줍니다.
mkdir 명령어는 해당 경로에 폴더를 생성하는 명령어입니다. 이를 이용하여 'opencv' 라는 폴더를 생성해줍니다.
cd 명령어는 뒷 경로에 적힌 주소로 위치를 옮기는 명령어입니다. 이를 이용하여 생성한 폴더에 들어갑니다.

 

$ wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.0.zip 
$ unzip opencv.zip 

 

openCV 소스파일을 다운받아줍니다.
다운받은 후 unzip 명령어를 이용하여 압축을 풀어줍니다. 

 

$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.0.zip
$ unzip opencv_contrib.zip

 

openCV_contrib라는 추가 모듈 소스 파일을 다운받아 줍니다.
이후 압축을 풀어줍니다.

 

명령어 : 

pi@raspberrypi:~/opencv $ ls -d */

출력 결과 : 

opencv-3.4.0 opencv_contrib-3.4.0 

 

ls -d */ 명령어로 해당 경로에 있는 폴더를 확인하면 위와 같이 두 폴더가 생성된 것을 확인할 수 있습니다.

 

pi@raspberrypi:~/opencv $ cd opencv-3.4.0 
pi@raspberrypi:~/opencv/opencv-3.4.0 $ mkdir build 
pi@raspberrypi:~/opencv/opencv-3.4.0 $ cd build 
pi@raspberrypi:~/opencv/opencv-3.4.0/build $

 

openCV 폴더 내부에 생성된 opencv-3.4.0 폴더로 이동하여 빌드를 진행할 build 폴더를 만들고 내부로 이동합니다.

 

명령어 : 

$ cmake -D CMAKE_BUILD_TYPE=RELEASE \

출력 결과 :

-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 명령어를 이용해서 컴파일 설정을 해줍니다.

 

pi@raspberrypi:~/opencv/opencv-3.4.0/build $ make -j3 

 

make 명령어를 통해 컴파일을 시작합니다. 뒤에 -j 명령어는 라즈베리파이의 CPU 코어를 얼마나 사용할지 지정하는 명령어입니다. 제가 사용하는 라즈베리파이는 3세대 모델이라 쿼드코어를 장착하고 있습니다. -j4로 코어를 4개 전부 사용하게 되면 오류가 날 가능성이 있어 -j3로 3개만 사용하도록 합니다. 만약 이 코드를 사용했는데 컴파일에 실패하면 make만 사용하여 빌드를 해줍니다.

 

저는 모두 다운받는데 약 3시간 반이 소요되었습니다. 이 과정에서 계속 실패하다가 8번 시도 끝에 성공했습니다. 아마 위 코드를 따라하시면 오류가 없을 것입니다. 

 

출력 결과 :

pi@raspberrypi:~/opencv/opencv-3.4.0/build $ 

 

위와 같은 입력 명령이 뜨면 설치가 완료된 것입니다.
컴파일이 완료되었으니 컴파일 한 파일을 설치합시다.

 

pi@raspberrypi:~/opencv/opencv-3.4.0/build $ sudo make install 

 

이 설치 과정은 얼마 걸리지는 않습니다. 

설치가 완료되었다면 cat /etc/ld.so.conf.d/* 명령어를 이용하여 /usr/local/lib라는 설정이 있는지 확인합니다.

 

명령어 : 

pi@raspberrypi:~/opencv/opencv-3.4.0/build $ cat /etc/ld.so.conf.d/* 

출력 결과 :

/opt/vc/lib    
# Multiarch support    /lib/arm-linux-gnueabihf    
/usr/lib/arm-linux-gnueabihf   
/usr/lib/arm-linux-gnueabihf/libfakeroot  
# libc default configuration   
/usr/local/lib     

 

위와 같이 명령어를 쳤을 때 /usr/local/lib라는 설정이 포함되어 있으면 됩니다.

 

만약 위 설정이 출력되지 않는다면 아래 설정을 따라합니다.

 

pi@raspberrypi:~/opencv/opencv-3.4.0/build $ sudo sh -c 'echo '/usr/local/lib' > /etc/ld.so.conf.d/opencv.conf' 
pi@raspberrypi:~/opencv/opencv-3.4.0/build $ sudo ldconfig  


이상으로 모든 설정을 마쳤습니다. 

 

python으로 제대로 설치되어 있는지 확인해 봅시다.

 

명령어 : 

pi@raspberrypi:~/opencv/opencv-3.4.0/build $ python  

출력 결과 : 

Python 2.7.13 (default, Nov 24 2017, 17:33:09)  
[GCC 6.3.0 20170516] on linux2   
Type "help", "copyright", "credits" or "license" for more information. 
>>> import cv2    
>>> cv2.__version__   
'3.4.0'    
>>>    

명령어 :

pi@raspberrypi:~/opencv/opencv-3.4.0/build $ python3 

출력 결과 : 

Python 3.5.3 (default, Jan 19 2017, 14:11:04)  
[GCC 6.3.0 20170124] on linux   
Type "help", "copyright", "credits" or "license" for more information. 
>>> import cv2    
>>> cv2.__version__    
'3.4.0'    
>>>     

 

python이라는 명령어를 입력하여 python 2.7 버전의 openCV를, python3라는 명령어를 입력하여 python3 버전의 openCV를 확인합니다.


위와 같이 '3.4.0' 이라는 버전이 출력되어야 합니다. 

 

위와 같이 정상적으로 설치되었다면

 

pi@raspberrypi:~/opencv/opencv-3.4.0/build $ cd 
pi@raspberrypi:~ $ rm -rf opencv 

 

cd 명령어로 폴더를 빠져나온 후 rm -rf 명령어로 openCV 소스코드를 삭제합니다.

 

이상으로 라즈베리파이에 openCV를 설치하여 보았습니다.

혹시 오류가 있거나 설치가 진행되지 않을 경우 댓글로 달아주시면 알려드리도록 하겠습니다. 감사합니다!

728x90
728x90