[OpenCV] 라즈베리파이(Raspberry Pi) 3에 OpenCV 설치하여 Python에서 사용하기
D 개발 이야기/Image Processing 2017. 3. 28. 01:05
안녕하세요 키노코더입니다.
라즈베리파이(Raspberry PI)를 이용하여 간단한 프로젝트를 구성하는 분들이 많을 텐데요.
라즈베리파이의 성능이 올라감에 따라 영상처리에 대한 수요도 늘어나는 것 같습니다.
이미 해외의 라즈베리파이 애용자들은 Pi Camera나 Web Camera를 이용하여 여러 어플리케이션들을 만들고 있습니다.
오늘은 대표적인 영상처리 Open Source인 OpenCV를 라즈베리파이 3에 설치하여 Python에서 사용하는 방법을 알아보겠습니다.
과정 요약
- 라즈베리파이의 Swap 영역 확장하기
- 필요 패키지 설치하기 (python 포함)
- OpenCV 빌드 및 설치하기
- Python에서 OpenCV 확인하기
라즈베리파이(Raspberry PI)의 Swap 영역 확장하기
top
Swap 영역을 확장하기 이전에 top 명령을 통해 swap 영역의 크기를 확인합니다.
저는 미리 1GB로 늘렸기 때문에 1,048,572 KB로 표기되었습니다. OpenCV를 빌드할 때 1GB 이상의 메모리가 필요하므로 라즈베리파이의 RAM 1GB만으로는 부족하기에 Swap으로 1GB를 할당하였습니다.
sudo nano /etc/dphys-swapfile
편집화면에서 CONF_SWAPSIZE를 늘려줍니다 (CONF_SWAPSIZE=100 => CONF_SWAPSIZE=1024)
저장 후 swapfile을 정지 후 재시작합니다.
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
위와 같이 수행 후 top 명령을 통해 swap을 확인하면 다시 늘어난 것을 확인할 수 있습니다.
필요 패키지 설치하기
build-essentialcmakepkg-configlibjpeg-devlibtiff5-devlibjasper-devlibpng12-devlibavcodec-devlibavformat-devlibswscale-devlibv4l-devlibxvidcore-devlibx264-devlibgtk2.0-devlibatlas-base-devgfortranpython2.7-devpython3-dev
OpenCV 빌드 및 설치하기
OpenCV Download
sudo apt-get install unzipunzip opencv-2.4.13zip -d opencv
cmake .
make -j4
위의 명령 '-j' 옵션은 사용할 빌드 시 동시에 처리할 job의 갯수를 말합니다. 의존성이 없는 빌드들을 동시에 수행함으로써 빌드 시간을 단축할 수 있습니다. 이상적으로는 CPU의 코어 갯수 또는 코어 갯수 + 1이 동시에 처리할 수 있는 job의 갯수라고 합니다. 하지만, 일반적으로 j1과 j2 사이에는 비약적인 성능 향상이 있는 반면, 그 이상에서는 차이가 크지 않습니다. 그럼에도 OpenCV와 같이 빌드시간이 긴 소스일 수록 전체적인 빌드시간 단축에는 용이한 것 같습니다.
빌드 중인 OpenCV
OpenCV의 빌드는 제 MacBook Pro에서도 10분 이상 걸렸던 것 같네요. 하물며 라즈베리파이에서는 더 오래걸리겠죠? 대략 1시간 이상 걸리는 작업이기 때문에 다른 작업을 하시면서 기다리는 것이 좋습니다.
빌드가 완료되면 이제 설치만 남았습니다.
sudo make install
make 명령을 통해 install을 수행합니다. 설치는 빌드만큼 오래걸리지 않습니다.
Python에서 OpenCV 확인하기
설치가 완료되었으니, python에서 확인해봅시다. 저는 python2.7을 실행시켜서 opencv가 제대로 import되는지 확인했습니다.
opencv는 cv2 패키지로 설치되며, __version__을 통해 버전을 확인할 수 있습니다. 제가 설치한 2.4.13 버전이 정상적으로 설치 되었군요.
마치며
참고 자료
상당 부분의 내용을 위의 해외 작성글에서 참고하였습니다. 설치 과정 중 Trouble shooting에 관하여 다루고 있으니 설치가 잘 되지 않는 분들은 한번 참고하면 좋을 것 같습니다.
'D 개발 이야기 > Image Processing' 카테고리의 다른 글
[OpenCV] 파이썬(python)으로 얼굴 검출 (Face Detection) 맛보기 (1) | 2017.07.04 |
---|---|
Windows에서 Machine Learning 맛보기: YOLO (Darknet) (7) | 2017.06.12 |
[OpenCV] 라즈베리파이 (Raspberry Pi) 3에서 웹캠 (WebCAM) 영상 가져오기 (1) | 2017.04.12 |
AWS (아마존 웹 서비스)에서 Darknet YOLO 사용해보기 (0) | 2017.04.02 |