라즈베리파이 4 OpenCV 4.1.2 ( opencv_contrib 포함 ) 설치하기

라즈베리파이4에 OpenCV4.1.2를 설치하는 OpenCV의 설치방법은 webnautes씨의 티화를 참고하였습니다. (webnautes 티 이야기 방문) 0. 라즈베리 파예 라즈비언 (2019-09-26 버전) 기본 설치 후 아래 설치 1. 패키지 업그레이드 1.1 기존 패키지에 새롭게 패키지 리스트를 업데이트 한다.

1.2 새로 버전의 패키지가 있으면 업그레이드 한다.

1.3 업그레이드 후 재시작합니다.

醫 라즈비안 2019-09-26 버전에서 upgrade 후 File Manager가 열리지 않는 경우가 발생하면 아래와 같이 실행합니다.

2. Open CV 컴파일전 필요 패키지 설치 2.1 build-essential 및 cmake 설치

2.2 특정 포멧 이미지 파일을 Read, Write하기 위한 필요 패키지 설치

2.3 특정 코덱의 비디오 파일을 Read, Write하기 위한 필요 패키지 설치

2.4 Video4 Linux 리눅스에서 가끔 비디오 캡처 및 비디오 디바이스 제어를 위한 API 패키지 설치

2. Streamer는 리눅스 기준으로 영상 스트리밍을 쉽게 처리할 수 있도록 만들어진 오픈소스 플레이더워크 이서이다.

2.6 Open CV에서 Windows 발생 등의 GUI를 위해 gtk 또한 qt를 선택하여 사용 가능하며, 여기에서는 gtk2를 지정해 준다.

2.7 OpenGL을 지원하기 위해 필요한 라이브러리 설치

2.8 Open CV 최적화를 위해 사용되는 라이브러리 설치

2.9 python 패키지는 OpenCV-Python 바인딩을 위한 패키지이며, Numpy는 매트릭스 연산 등을 빠르게 처리할 수 있다.

3. Open CV 컴파일 및 설치 3.1 소스코드 저장하는 대시 디렉토리 발생 및 이동

3.2 OpenCV 4.1.2 소스코드를 다운로드하여 압축을 푼다.

3.3 opencv_contrib 다운 및 압축 해제하기(SIFT, SURF 등을 사용하기 위해 필요)

3.4 두 디렉토리 발생 확인

3.5 opencv-4.1.2 디렉토리로 이동하여 build 디렉토리 생상 및 build 디렉토리로 이동(컴파일은 build 디렉토리에서 이루어짐)

3.6cmake를 사용하여 Open CV 컴파일 설정을 해준다(cmake 실행 중에 추가적인 다운로드가 있으므로 라즈베리 파이에 인터넷이 연결되어 있어야 함)

아래와 같은 메시지가 나타나면 정상적으로 설치되었습니다.

3.7 컴파일 시 메모리 부족으로 오류가 지나치지 않도록 swap 공간을 항상 배치해야 할 것이다. /etc/dphys-swapfile 파일 열기

CONF_SWAPSI_E 변수 값을 2048로 수정합니다.

swap을 재시작하여 변경된 설정값을 반영한다.

변경된 설정 값 확인 (swap:2097148)

3.8make 명령어를 사용하여 컴파일 시작(-_4옵션 부여 진행)

python 라이브러리 빌드 부분에서 장시간 멈춰있다면 Ctrl+C를 눌러서 중지하고 make 명령어로 다시 진행하면 된다.

컴파일완료

>

3.9 컴파일 결과물 설치

샘플 코드는 /usr/local/share/opencv4/samples/위치로 복사된다.

>

3.10 opencv 라이브러리를 찾을 수 있도록 다음 명령을 실행합니다.

3.11/etc/dphys-swapfile 파일을 열고, CONF_SWAPSI_E 변수 값을 다시 100으로 수정하고 restart 할 것.

>

4.OpenCV의 설치 결과 확인 4.1C/C++ 4.1.1 OpenCV 4.x에서는 옵션으로서 opencv 대신 opencv4를 사용하면 pkg-config를 사용하여 컴파일 할 수 있다.

4.1.2 테스트를 위해 라즈베리 파이 카메라를 접속한다. Preferences > Raspberry Pi Configuration 창을 연다.

>

Interfaces 탭에서 Camera 항목을 Enable 체크하고 OK를 클릭하여 reboot합니다.

>

/dev/video0 디바이스 파일이 발발하고 있는지 확인합니다.

/dev/video0이 없다면 디바이스 장치를 만들어야 할 것이다.만드는 방법은 webnautes씨의 티스토리 참고(webnautes.tistory.com/1192) 파이카메라의 경우 소스 코드를 수정해야 할 것이다. open 함수의 어규먼트를 – 1로 하면 정상적으로 작동되며, 0으로 하면 카메라를 열지 못하고 무한 대기 상태에 빠지게 된다.

4.1.3 CMake를 사용하는 노하우로 예제 코드를 가져와 컴파일해 본다.

CMake Lists.txt 파일을 발발하여 아래의 예기를 복사한다.

videocapture_basic.cpp 파일을 열고 cap.open(-1)으로 수정한다.

아래 소스 코드의 cap.open(deviceID+apiID)부분을 cap.open(-1)으로 수정합니다.

>

build 디렉토리를 발생시켜 컴파일을 수행한다.

결과는 아래와 함께 과인된다.

>

4.1.4 videocapture_basic 파일을 실행시키면 영상이 나타난다.

결과화상

>

실행시 아래와 같이 WARN 발생1 아름답지 않고 영상이 보이는데는 사고가 없다.

4.2 Python 4.2.1 python 2와 python 3에서 Open CV 버전이 출력되는지 확인한다.

4.2.2 Python도 c/cq처럼 파이카메라의 경우 0 대신 -1을 사용합니다.

이하의 소스코드에서 cap = cv.Video Capture(source) 부분을 cap = cv.Video Capture(-1)로 수정한다.

>

4.2.3 video.py 예제 코드를 실행하면 영상을 볼 수 있다.

>

python도 c/c++와 같이 실행 시 아래와 같이 WARN 발생 시 본인의 영상이 보이는데 문제가 없다.

필요 없어진 컴파일에 사용한 opencv 소스 코드 디렉토리를 삭제한다.

醫 출처 : e4ds make