'OpenCV'에 해당되는 글 1건

  1. 2017.11.05 라즈베리파이 라즈비안에 OpenCV설치
posted by 심재형 2017. 11. 5. 02:58

1. OpenCV 이전 버전 제거

OpenCV 3.3.1 버전이 제대로 동작하기 위해 이전 버전을 제거해야한다.


이전 버전 확인: pkg-config --modversion opencv


$ pkg-config --modversion opencv
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found



이렇게 보이면 OpenCV 2.4대 버전이 설치안되어 있는 상태


만일 이전 버전이 있는 경우, 다음과 같이 OpenCV 라이브러리 설정 파일을 포함해서 기존에 설치된 OpenCV 패키지를 삭제하고 진행해야 한다


$ sudo apt-get purge  libopencv* python-opencv

$ sudo apt-get autoremove

2. 패키지 업그레이드

OpenCV 3.3.1을 설치하기 전에 기존에 설치된 패키지들을 업그레이드 해주기 위한 작업이다. 오래 걸리더라도 하는 것이 좋다. Raspbian 저장소(repository)로부터 패키지 리스트를 업데이트한다. 기존에 설치된 패키지들의 새로운 버전이 저장소에 있다면 리스트를 업데이트 하기위해 실행한다. 기존에 설치된 패키지의 새로운 버전이 있으면 업그레이드한다. 업데이트 한 후, 업그레이드.


$ sudo apt-get update

$ sudo apt-get upgrade


3. OpenCV 컴파일 전 필요한 패키지 설치

OpenCV를 컴파일하는데 사용하는 것들이 포함된 패키지들을 설치해야 한다.

build-essential : C/C++ 컴파일러와 관련 라이브러리, make 같은 도구들이 포함된다.

cmake : 컴파일 옵션이나 빌드된 라이브러리에 포함시킬 OpenCV 모듈 설정등을 위해 필요하다.

pkg-config : 터미널에서 특정 라이브러리를 사용한 소스코드를 컴파일시 필요한 컴파일러 및 링커 플래그를 추가하는데 필요하다.

$ sudo apt-get install build-essential cmake

$ sudo apt-get install pkg-config

특정 포맷의 이미지나 비디오 파일을 읽고 기록하기 위해 필요한 패키지들도 설치한다.

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

$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev

$ sudo apt-get install libxvidcore-dev libx264-dev libxine2-dev

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

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

$ sudo apt-get install libqt4-dev


OpenGL 지원과 OpenCV최적화 위해 사용되는 라이브러리

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

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


OpenCV-Python 바인딩하는 패키지들과 매트릭스를 빠르게 연산하는 Numpy

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

$ sudo apt-get install python-numpy python3-numpy


4. OpenCV 설정과 컴파일 및 설치

소스 코드를 저장할 임시 디렉토리를 생성하여 이동 후 진행

$mkdir opencv

$cd opencv

~/opencv$


OpenCV 3.3.1 소스코드를 다운로드 받아 압축을 푼다.

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

$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.3.1.zip
$ unzip opencv_contrib.zip


두 개의 디렉토리가 생성됩니다.

$ls

$cd opencv-3.3.1

$mkdir build

$cd build

build 디렉토리 내에서 컴파일한다.

이제 cmake를 사용하여 OpenCV 컴파일 설정을 한다.


***라즈비안에서 복사 붙여넣기 하는경우 한글오류로 인해 '=' 의 위치가 바뀌어 오류가 날 수 있다. 직접 아래 설정과 비교해서 확인해야한다.


<cmake 오류 발생하는 경우>

1) '=' 위치 확인할 것

2) '=' 앞 뒤로 빈칸 없어야 함

3) PATH=../../   (빈칸없음)  주의, 불필요한 공백 포함되는 경우 경로 오류 발생함 

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 WITH_QT=ON \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.3.1/modules \
-D WITH_V4L=ON  \
-D WITH_FFMPEG=ON \
-D WITH_XINE=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
../



정상적으로 완료되면 아래와 같은 문구가 뜸

-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/opencv/opencv-3.3.1/build


이제 make 명령을 사용하여 컴파일을 시작한다.

$time make


매우 오래걸림. 라즈베리파이3 B 환경에서 약 3시간 정도 소요됨


user 178m15.540s


이제 컴파일 결과를 설치한다. 샘플 코드들은 /usr/local/share/OpenCV/samples/ 위치에 언어별 폴더에 복사된다.

$sudo make install



/etc/ld.so.conf.d/ 디렉토리에 /usr/local/lib를 포함하는 설정파일이 있는지 확인한다.

$ 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이 출력되지 않는경우)

$sudo sh -c 'echo '/usr/local/lib' > /etc/ld.so.conf.d/opencv.conf'

$sudo ldconfig

5. OpenCV 설치 결과 확인

$pkg-config --modversion opencv
3.3.1