개인 프로젝트: 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
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
opencv_contrib 설치패키지 다운로드(4.3.0 버전)
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.3.0.zip
압축 해제
unzip opencv.zip
unzip opencv_contrib.zip
ls로 폴더 확인
ls
8. 압축을 푼 디렉터리로 이동하여 build 디렉터리 생성 후 이동
cd opencv-4.3.0
mkdir build
cd build
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 ../
10. Swap 멀티코어 사용, 메모리 부족 대비
nano 편집기로 해당 파일을 연다
sudo nano /etc/dphys-swapfile
기존의 것은 주석처리하고 사이즈를 20배(2048)으로 늘린다.
#...
# CONF_SWAPSIZE=100
CONF_SWAPSIZE=2048 // <= 메모리를 20배 확장
...
control+x , y 로 저장
11. 변경한 SWAP 업데이트
이전 메모리 확인
free
스왑실행
sudo /etc/init.d/dphys-swapfile restart
이후 메모리 확인
free
12. 컴파일 실행
이 과정은 약 2시간 이상 걸릴 수 있는 작업이다.
make
이때 중간에 라즈베리파이의 전원을 끄거나 프로세스를 종료한 후 다시 컴파일하면 중간에 에러가 날 수 있다.
100%가 다 차면 완료
13. 컴파일 결과물을 설치
sudo make install
14. OpenCV 라이브러리를 찾을 수 있도록 명령
sudo ldconfig
15 swap 원상복귀
다시 100으로 바꾼다
sudo nano /etc/dphys-swapfile
sudo /etc/init.d/dphys-swapfile restart
free
16 pip
sudo pip install opencv-python
OpenCV 설치 확인
아래의 코드로 Opencv가 잘 설치가 되었는지 확인한다
import cv2
print(cv2.__version__)
이전: 개인 프로젝트: 1차시 Raspberry Pi 에 Python3.7, Tensorflow 2.4 설치하기