개인 프로젝트: 2차시 Raspberry Pi 에 OpenCv 설치하기 - Marvic1130/EmbeddedSystem_Class GitHub Wiki

Raspberry Pi 에 OpenCv 설치하기

OpenCv

OpenCv란?

OpenCv 는 Open Source Computer Vision Library로 크로스플랫폼과 실시간 이미지 프로세싱에 중점을 둔 라이브러리이다.

영상 관련 라이브러리로서 사실상 표준의 지위를 가지고 있다. 조금이라도 영상처리가 들어간다면 필수적으로 사용하게 되는 라이브러리이다.

OpenCv는 C++을 공식으로 채택하고 있지만 Python을 지원하여 관련 라이브러리를 검색하면 C++보다 Python이 먼저 나올정도로 Python과 호환이 매우 좋고 Python에서 많이 사용한다.

OpenCv와 Python

OpenCv는 C++을 직접 활용하기보다 파이썬으로 랩핑하여 사용하는 추세인데, 딥러닝 관련 연구에 OpenCv가 많이 쓰인다.

이미지나 영상을 픽셀단위로 접근해야할 경우 C++을 써야겠지만, 단순 매트릭스 연산을 한다고하면 Python의 numpy와 cv2(OpenCv)의 궁합이 C++에비해 훨씬 편리하다.

일반적인 PC에서 OpenCv를 설치하는 방법은 아래 명령어를 입력하면 된다.

pip install opencv-python

pip install opencv-contrib-python

Raspberry Pi 에 OpenCv 설치하기

Raspberry Pi에 OpenCv 를 pip install opencv-python으로 설치를 하면 import Error를 띄운다.

그렇기 때문에 Raspberry Pi에서는 Opencv를 직접 빌드, 컴파일을 해서 사용해야한다.

1. apt-get 패치

sudo apt-get update

sudo apt-get upgrade

2. 컴파일링을 위한 패키지 설치

sudo apt-get install -y build-essential cmake

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

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

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

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

스크린샷 2022-12-15 오후 4 01 33

3. OpenCv GUI 환경설치

sudo apt-get install -y libgtk2.0-dev

sudo apt-get install -y libgtk-3-dev

sudo apt-get install -y libqt4-dev

4. OpenGL 지원패키지 설치

sudo apt-get install -y mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev

5. 파이썬에 필요한 OpenCV관련 패키지 설치

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

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

6. home디렉터리에 새로운 디렉터리 생성 후 이동

mkdir opencv

cd opencv

7. opencv 필요 패키지 다운로드 및 압축해제

파이썬 3.7버전과 호환성 문제로 최신버전이 아닌 4.3버전을 설치한다.

(예시 이미지에서는 최신버전인 4.6을 설치했지만 코드는 4.3버전 설치방법이다)

opencv 설치패키지 다운로드(4.3.0 버전)

wget -O opencv.zip https://github.com/opencv/opencv/archive/4.3.0.zip

스크린샷 2022-12-15 오후 4 17 34

opencv_contrib 설치패키지 다운로드(4.3.0 버전)

wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.3.0.zip

스크린샷 2022-12-15 오후 4 18 12

압축 해제

unzip opencv.zip

unzip opencv_contrib.zip

ls로 폴더 확인

ls

스크린샷 2022-12-15 오후 4 20 29

8. 압축을 푼 디렉터리로 이동하여 build 디렉터리 생성 후 이동

cd opencv-4.3.0

mkdir build

cd build

스크린샷 2022-12-15 오후 4 25 16

9. 해당 디렉터리에서 OpenCV 컴파일 설정하기

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTAL_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 ENABLE_VFPV3=ON  ?\
-D WITH_QT=OFF  ?\
-D WITH_GTK=ON  ?\
-D WITH_OPENGL=ON  ?\
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.3.0/modules  ?\
-D WITH_V4L=ON  ?\
-D WITH_FFMPEG=ON  ?\
-D WITH_XINE=ON  ?\
-D BUILD_NEW_PYTHON_SUPPORT=ON  ?\
-D OPENCV_GENERATE_PKGCONFIG=ON ../

스크린샷 2022-12-15 오후 5 14 04

스크린샷 2022-12-15 오후 4 55 05

10. Swap 멀티코어 사용, 메모리 부족 대비

nano 편집기로 해당 파일을 연다

sudo nano /etc/dphys-swapfile

스크린샷 2022-12-15 오후 5 15 38

기존의 것은 주석처리하고 사이즈를 20배(2048)으로 늘린다.

#...
# CONF_SWAPSIZE=100
CONF_SWAPSIZE=2048		// <= 메모리를 20배 확장
...

스크린샷 2022-12-15 오후 5 16 57

control+x , y 로 저장

11. 변경한 SWAP 업데이트

이전 메모리 확인 free

스왑실행 sudo /etc/init.d/dphys-swapfile restart

이후 메모리 확인 free

스크린샷 2022-12-15 오후 5 22 04

12. 컴파일 실행

이 과정은 약 2시간 이상 걸릴 수 있는 작업이다.

make

스크린샷 2022-12-15 오후 5 23 43

이때 중간에 라즈베리파이의 전원을 끄거나 프로세스를 종료한 후 다시 컴파일하면 중간에 에러가 날 수 있다.

100%가 다 차면 완료

13. 컴파일 결과물을 설치

sudo make install

스크린샷 2022-12-15 오후 5 27 40

14. OpenCV 라이브러리를 찾을 수 있도록 명령

sudo ldconfig

15 swap 원상복귀

다시 100으로 바꾼다

sudo nano /etc/dphys-swapfile

스크린샷 2022-12-15 오후 5 36 21

sudo /etc/init.d/dphys-swapfile restart

free

스크린샷 2022-12-15 오후 5 35 50

16 pip

sudo pip install opencv-python

OpenCV 설치 확인

아래의 코드로 Opencv가 잘 설치가 되었는지 확인한다


import cv2

print(cv2.__version__)

스크린샷 2022-12-15 오후 5 39 33


이전: 개인 프로젝트: 1차시 Raspberry Pi 에 Python3.7, Tensorflow 2.4 설치하기

다음: 개인 프로젝트: 3차시 Raspberry Pi 로 얼굴인식하기