This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

*/

[OpenCV] Raspberry Pi 4에 opencv 3.4.9 설치

라즈베리파이 4에 OpenCV 3.2라이브러리 설치하기

기존에 OpenCV가 설치되어 있었을 경우 다음과 같이 삭제하고 진행한다.

$ sudo apt purge libopencv* python-opencv
$ sudo apt autoremove
$ sudo apt update
$ sudo apt upgrade

기존에 OpenCV가 설치되어 있지않았다면 위를 건너 뛰고 OpenCV라이브러리를 빌드하기 위한 필요 라이브러리들을 설치한다.

$ sudo apt install -y -y build-essential cmake
$ sudo apt install -y pkg-config
$ sudo apt install -y libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
$ sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev
$ sudo apt install -y libv4l-dev v4l-utils
$ sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev 
$ sudo apt install -y libqt4-dev libgtk2.0-dev
$ sudo apt install -y mesa-utils libgl1-mesa-dri libqt4-opengl-dev 
$ sudo apt install -y libatlas-base-dev gfortran libeigen3-dev
$ sudo apt install -y python2.7-dev python3-dev python-numpy python3-numpy

OpenCV Source Download

$ git clone https://github.com/opencv/opencv.git
$ cd opencv
$ git checkout tags/3.4.9
$ cd ..

$ git clone https://github.com/opencv/opencv_contrib.git
$ cd opencv_contrib
$ git checkout tags/3.4.9
$ cd ..

현재 4.4.0까지 릴리즈되어 있다. 3.4.9버전이 아니라 다른버전을 사용하고자 할때는 tags/3.4.9를 원하는 버전으로 바꾸어 사용하면 된다. tag를 보는 방법은 $ git tag

OpenCV 라이브러리 빌드

$ mkdir build
$ cd build

$ 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=OFF \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D WITH_QT=OFF \
-D WITH_GTK=ON \
-D WITH_CUDA=OFF \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-D WITH_V4L=ON \
-D WITH_FFMPEG=ON \
-D WITH_XINE=ON \
-D BUILD_OPENCV_PYTHON2=ON \
-D BUILD_OPENCV_PYTHON3=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
../

cmake를 수행했을때 위와 같이 config done이 출력되면 make파일이 성공적으로 만들어진 경우다 계속 진행하자

$ time make -j4
$ sudo make install
$ sudo sh -c 'echo '/usr/local/lib' > /etc/ld.so.conf.d/opencv.conf'
$ sudo ldconfig
$ sudo apt upgrade

Raspberry Pi memory가 4GByte 이하일 경우 스왑메모리 설정

위에서 make하기 전에 스왑메모리를 늘려주어야 컴파일시 internal error가 발생하지 않는다.

$ sudo nano /etc/dphys-swapfile
               내용중 CONF_SWAPSIZE=100 을 CONF_SWAPSIZE=2000 으로 변경 하고 저장
$ sudo /etc/init.d/dphys-swapfile restart

Make가 끝난후에 다시 size를 100으로 변경한다.


관련문서

Ubuntu apt-get, apt-cache 명령

apt-get은 데비안 계열(ubuntu)의 리눅스에서 사용되는 패키지관리 명령어 도구

apt-get, apt-cache 대신 apt를 사용하세요. 진행사항을 프로그레스로 보여준다던가 업데이트해야할 갯수등 Option을 넣어야하는것들을 기본으로 사용하게 합니다.


Package Index정보를 업데이트 - /etc/apt/source.list에 있는 인텍스 정보를 최신 정보로 갱신

$  sudo apt update

Package 설치

$  sudo apt install 패키지이름
Package 재설치
$  sudo apt install 패키지이름
Package 삭제 - 설정파일은 지우지 않음
$  sudo apt remove 패키지이름
Package 삭제 - 설정까지 모두 지움
$  sudo apt --purge remove 패키지이름
Package 소스코드 다운로드
$  sudo apt source 패키지이름
다운로드 받은 소스를 의존성있게 빌드
$  sudo apt build-deb 패키지이름
설치된 Package Upgrade - 설치되어 있는 패키지를 새버전으로 Upgrade
$  sudo apt upgrade
설치된 Package의 의존성을 검사하며 Upgrade
$  sudo apt dist-upgrade
Package 검색
$  sudo apt search 패키지이름
Package 정보보기

$  sudo apt show 패키지이름


Protocol buffers ?

 프로토콜 버퍼란?

구글에서 만들어서 공개한 구조화된 데이터를 직렬화 하기 위한 언어중립적이고, 플랫폼 중립적인 확장 메카니즘이며, 저장을 목적으로 서로 통신할 프로그램을 개발할 때 유용하다.

지원 언어 : C++, Python, JAVA, GO


위키피디아 : 프로토콜버퍼

구글 개발자 싸이트

[OpenCV] OpenCV4에서 UVC Camera 사용시 capture 안되는 이슈

환경 :

- 라즈베리파이 4 with 라즈베리안

- OpenCV 4 


guvcview로는 video가 나오는데 테스트하려는 코드에서는 아래와 같은 오류 발생..


[ WARN:0] global /home/pi/work/opencv/opencv-4.1.2/modules/videoio/src/cap_gstreamer.cpp (933) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1

[ WARN:0] global /home/pi/work/opencv/opencv-4.1.2/modules/videoio/src/cap_gstreamer.cpp (1184) setProperty OpenCV | GStreamer warning: GStreamer: unhandled property


Linux 설치된 특정 Library 버젼 확인하는 방법

 설치된 라이브러리의 버젼을 확인하고자 할 때 pkg-config 명령으로 아래와 같이 확인.

예를 들어  python의 버젼을 확인하고자 할때

$  pkg-config --modversion python


시스템에 설치된 모든 python버젼을 찾고 싶을때

$  pkg-config --list-all | grep python