관리 메뉴

악보쓰는 프로그래머

라즈베리파이 OpenCV 설치(빌드 없이 설치파일로) 본문

Programming/IoT_Embedded

라즈베리파이 OpenCV 설치(빌드 없이 설치파일로)

dltpdn@gmail.com 이세우 2017.11.17 16:05

  • Update : 2018.02.02 , OpenCV 3.4.0

라즈베리파이에 OpenCV를 설치하는 방법을 알아 봅니다.
OpenCV는 인텔에서 시작해서 현재는 오픈소스로 운영되는 가장 유력한 컴퓨터 비전 라이브러입니다.
라즈파이 카메라나 USB 타입의 웹캠을 연결해서 OpenCV 프로그래밍을 하면 얼굴 인식해서 문을 열어 주거나, 자동차 번호판을 인식해서 주차장 문을 열어 주는 등의 메이커 활동에 활용할 수 있습니다.

OpenCV는 원래 C++ 언어로 만들어졌지만, 공식적으로 python, Java, Android, iOS로 바인딩되어 있어서다양한 언어로 사용할 수 있습니다.

OpenCV를 라즈베리파이에 설치하려면 apt를 이용해서 opencv-python 패키지를 설치하면 되는데, 이것은 python 2.7만 지원하고 OpenCV 버전도 2.4 입니다.
그래서 python3도 사용할 수 있고 최신 버전인 OpenCV 3을 사용하려면 소스코드를 받아서 직접 빌드해야 합니다.
그런데, 빌드 과정이 복잡하고 시간도 2시간 정도 소요됩니다. 운이 좋을때 2시간이라는 것이지 빌드 도중에 멈추거나 문제가 발생하면 한 나절은 그냥 날리게 됩니다.
그래서 제가 미리 빌드해서 데비안 패키지 파일(*.deb) 형태로 만들어 놓았고 이것으로 설치하면 금방 설치가 가능합니다.

자 그럼 opencv-python 패키지를 설치하는 방법과 제가 빌드해서 제공하는 데비안 패키지 파일로 설치하는 방법을 하나씩 소개할께요.

python은 추가 패키지 설치를 위해서 pip라는 패키지 관리자를 제공하는 데요, 당연히 라즈베리파이에서도 사용할 수 있습니다.
인텔 칩을 사용하는 일반 노트북이나 데스크탑 윈도우즈나 맥에서는 pip를 이용해서 opencv-python 패키지를 설치하면 되는데, 라즈베리파이가 사용하는 ARM 아키텍쳐는 pip 저장소에 빌드된게 없어서 설치가 되지 않습니다.
다행히도 apt 저장소에 python 2.7을 지원하는 패키지가 있으니 가장 손쉽게 사용할 수 있는 방법은 이것을 이용하는 것입니다.

sudo apt update
sudo apt install python-opencv
python
>>> import cv2
>>> cv2.__version__
‘2.4.9.1'

문제는 python3에서는 안돌아가고, opencv 버전이 2.4로 낮다는 겁니다.

이제 python 3도 지원하는 opencv 3.3 버전을 깔아 볼까요?
제가 미리 빌드해놓은 데비안 패키지 파일은 아래의 Github 사이트에서 받을 수 있습니다.


빌드 환경은 아래와 같습니다.
  • OpenCV 3.4.0 +  Contrib 
  • Raspberry-Pi 3 Model B+
  • Rasbian Stetch(Debian 9)

우선 OpenCV 버전은 3.3.0입니다. 2.4 버전도 시간이 될때 올려 놓을 생각입니다.
OpenCV3 부터는 정식 릴리즈와 extra module이 분리되었는데요, 미 성숙한 라이브러리나 특허 등으로 정식 릴리즈에 포함할 수 없는 라이브러리는 OpenCV Contrib 라는 repository로 아예 분리 시켰습니다.
SIFT, SURF 같은 API를 사용하려면 contrib 패키지를 꼭 함께 설치해야 합니다. 여기서 설치할 패키지는 모두를 포함하고 있습니다.

빌드한 환경은 Raspberry-Pi 3 Model B+ 하드웨어이고 운영체제는 Rasiban Stretch 입니다. 2017년 8월 이전에는 Rasbian jessie 가 사용되었지만, 8월 부터 데비안 버전이 올라가면서 Stretch로 바뀌었습니다. 이 번 빌드에 사용한 라즈비안도 Stretch 입니다. 시간이 되는대로 Jessie 용 파일도 올려 놓을 계획입니다.

설치에 앞서 종속 패키지를 설치합니다.

sudo apt install -y libxine2  libqtgui4 libjasper1 libqt4-test libqt4-opengl


이제 설치를 위해서 다운로드 받겠습니다.



다운로드 받은 디렉토리 경로로 이동합니다.

cd opencv-for-rpi
cd stetch
cd 3.3.0


5개의 *.deb 파일이 존재하는 것을 볼 수 있습니다.

설치를 시작합니다.

sudo dpkg -i OpenCV*.deb  #2018.02.02 아래의 명령어로 설치하면 필요한 종속 라이브러리를 설치 중에 함께 설합니다.
sudo apt install -y ./OpenCV*.deb

설치가 잘 되었는지 확인합니다.

pkg-config —modversion opencv


pic.jpg 라는 그림 파일이 있다는 전제하에 아래와 같은 코드를 작성해서 정상적으로 동작한다면 설치는 잘 된 겁니다.

먼저 파이썬 파일입니다. test.py로 저장해보세요.
import numpy as np
import cv2

img_file = “./pic.jpg"
img = cv2.imread(img_file)

cv2.imshow(‘IMG', img)
cv2.waitKey(0)
cv2.destroyAllWindows()


다음은 C++ 파일 입니다. 
#include <opencv2/opencv.hpp>

using namespace cv;

int main( int argc, char** argv ){
  Mat image;
  String file_name = “./pic1.jpg";
  image = imread( file_name, CV_WINDOW_AUTOSIZE );

  namedWindow( "IMG", WINDOW_AUTOSIZE );
  imshow( "IMG", image );
  waitKey(0);
  return 0;
}

위의 파일을 test.cpp로 저장했다면 아래와 같은 명령으로 컴파일 할 수 있습니다.

g++ -o test test.cpp $(pkg-config --libs --cflags opencv)


각각 python , python3, 그리고 ./test 로 실행해 보시면 그림 파일이 뜰겁니다.
python test.py
python3 test.py
./test

만약 ssh로 연결하셨다면 결과 화면이 안 뜰텐데, 아래 X-window 띄우기 포스트를 참고하세요.

끝.


31 Comments
  • 프로필사진 황군 2017.11.20 18:07 신고 안녕하세요 혹시 opencv를 라즈베리에 파이썬말고 그냥C로 설치하는방법도 알수있을까요
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2017.11.28 10:40 신고 포스트에 설명한 방법이 2가지 인데요,
    두번째 방법은 python을 포함해서 C/C++ 로 사용할 수 있는 방법입니다. C++로 테스트하는 코드도 올려 놨는 걸요.
  • 프로필사진 바부팅 2017.11.21 03:32 신고 안녕하세요~~라이브러리 설치시
    dpkg: dependency problems prevent configuration of opencv-libs:
    opencv-libs depends on libswscale4 (>= 7:3.2.5); however:
    Package libswscale4 is not installed.
    같은에러가 발생하는데 혹시 원인을 알 수 있을까요??
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2017.11.28 10:42 신고 해당 라이브러리에 종속성이 있는데 설치가 안된것 같습니다.
    sudo apt install libswscale4 로 설치하시거나
    sudo apt-get --fix-broken install 해 보시면 될것 같습니다.
  • 프로필사진 감사합니다:3 2017.12.12 19:18 신고 덕분에 무사히 설치했습니다!
    파이썬으로 테스트 중인데, 7번째줄에서 ( cv2.imshow(‘IMG', img) ) 오류가납니다.
    내용은
    cv2.error: /home.pi/opencv-3.3.0/modules/highgui/src/window.cpp:333; error: (-215) size.width>0 && size.height>0 in function imshow
    라고 뜹니다. 원인을 뭔지 모르겠어서 질문남겨봅니다! 감사드립니다!
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.02.03 14:41 신고 질문하신 오류 메시지는 보여 주려는 영상의 내용이 없는 경우 입니다.
    cv2.imshow('IMG', img) 이전에 cv2.imread('path/to/img') 와 같은 코드가 있을 텐데 해당 경로가 옳은지 확인해 보세요.
  • 프로필사진 ReStartAllKill 2018.02.14 12:46 신고 opencv 커스터마이징해서 사용해야 하는 상황인데 데비안 패키지를 어떻게 만드셨는지 알려주실수 있으신가요??
    빌드 후 생성되는 /usr/local/opencv관련 파일들만 데비안 패키지 폴더에 넣으면 되는건가요?
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.02.21 01:00 신고 데비안 패키지 생성하는 방법은 cmake 할때 옵션을 -D CPACK_BINARY_DEB=ON 을 추가 하시면 되는데, 문제가 간단히 해결 되지는 않습니다.

    답글로 모두 설명 드리기는 어려우니 나중에 블로그에 따로 포스팅하겠습니다.
    일단 급하시면 아래 링크를 참조하십시오.

    https://cmake.org/Wiki/CMake:CPackPackageGenerators
  • 프로필사진 대학생 2018.03.19 07:12 신고 안녕하세요 대학생입니다 . 제가 이 방법으로 매우 빠르게 opencv를 설치했습니다 그런데 opencv에 딸려져 있는 sample들도 사용하고 싶은데 일반적으로 깔게 되면 python /usr/local/share/OpenCV/samples/python/facedetect.py경로로 깔리게 된다고 알고 있습니다 이렇게 만들려면 어떻게 해야 하나요?
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.05.16 15:50 신고 샘플을 포함하는 벙법은 알아봐야겠네요. 일단은 OpenCv 깃헙 사이트에 소스가 있으니 다운받아 쓰셔도 되지 않을까요?
  • 프로필사진 ㅇㅇ 2018.03.20 22:47 신고 정말 감사합니다. 최고에요
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.05.16 15:49 신고 고맙습니다.
  • 프로필사진 HelloWorld 2018.05.13 00:15 신고 감사합니다!!
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.05.16 15:49 신고 저도 고맙습니다.
  • 프로필사진 대학생 2018.05.22 17:19 신고 종속패키지 설치하는 하는부분에서 패키지를 전부 찾질못하네요..오류내용입니다.

    libqtgui4 패키지를 사용할 수 없습니다. 하지만 다른 패키지가 참조하고 있습니다.
    해당 패키지가 누락되었거나 지워졌다는 뜻입니다. 아니면 또 다른 곳에서
    패키지를 받아와야 하는 경우일 수도 있습니다.
    이런 오류가뜨는데.. 혹 이부분에 대해 알고계신게 있나요??
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.05.23 10:15 신고 종속 패키지를 일일이 설치하지 않아도 되는 명령어를 블로그 글 중에 추가해 놨는데, 그걸로 해도 그런지 궁금하네요.

    sudo apt install -y ./OpenCV*.deb

    명령어는 위와 같구요.

    만약 이미 설치했는데, 추가 종속 설치가 되지 않았다면 아래 명령어를 해보세요.

    sudo apt-get --fix-broken install
  • 프로필사진 대학생 2018.05.24 01:06 신고 아 함께 설치하게 한 deb 실행하니까 잘 되네요. 감사합니다. 근데 공식홈페이지에서 직접 빌드시 거의 16기가에 달하던데 제작하신 파일은 모든 기능을 설치하지 않은건가요??
  • 프로필사진 Favicon of http://chldmagh22.tistory.com BlogIcon 닉필 2018.07.18 16:53 신고 안녕하세요 라즈베리 공부하고있는 학생입니다.
    제가 opencv3.2.0버전을 사용중인데 파이썬예제를 돌리면 No module named cv2 에러가 계속 뜹니다.
    이에관해서 찾아보니 3.0.0버전 이상부터는 cv2 지원을 안한다는 글을 봣었는데 이러한 에러는 어떻게 해결하나요?
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.08.16 20:56 신고 안녕하세요?
    질문하신 내용이 잘 이해가 되지 않네요.

    OpenCV 3.2.0 버전을 사용중이라는 말은 cv2 모듈을 사용하고 있다는 말인데, cv2 모듈이 없다는 에러가 뜬다고 하시니 이해할 방법을 모르겠습니다.

    3.0.0 버전 이상 부토는 cv2 지원을 안한다??는 말에 3.0.0은 OpenCV 버전을 말씀하시는 거라면 OpenCV는 2.3 이후 모든 버전에 대해서 cv2라는 모듈 이름을 사용하고 있으니 틀린 말입니다.
  • 프로필사진 수강생 2018.07.31 11:15 신고 강사님 안녕하세요 지난주에 Open CV 교육에 참석했던 수강생입니다
    개인PC에 Open CV 설치하려고 하는데 아래와 같은 에러가 나와서 문의를 드리오니 확인 부탁드립니다
    1. git clone 실행하면 could not resolve host : github.com이라는 에러가 나옵니다..하여 직접 다운로드후 진행하려 하니
    2. ///패키지의 'OpenCV.deb' 릴리즈를 찾을 수 없습니다 라는 에러가 쭈~욱 나옵니다..
    3. 기존에 python2 버젼 opencv가 깔려있었는지, cv2.__version__을 입력하면 나오긴하는데요..문제가 python으로만 실행되고 python3로 하면 cv2 모듈이 없다고 에러가 나오네요..
    어제오늘 2일동안 극도의 스트레스를 받고 있습니다 ㅜㅜ 에스코트파일 다운받아서도 해보고 다 해봤는데요..확인해야될 사항이 있을지 말씀 좀 부탁드립니다 ㅜㅜ 감사합니다!
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.08.16 20:53 신고 안녕하세요? 답변이 늦어서 죄송합니다.

    git clone에서 에러가 난것은 호스트 이름을 찾지 못했다는 것으로 DNS 서버 등록이 잘 못 된것같습니다. 직접 다운로드도 같은 이유 때문에 안된것 같구요.

    라즈베리파이 python2에는 OpenCV 2.4가 아마 기본으로 설치되어 있을겁니다.

    cat /etc/resolve.conf
    명령으로 dns 서버 주소가 정확히 등록되었는지 확인해 보시고 만약 아니라면 /etc/dhcpcd.conf 파일에 dns 항목을 수정하시면 될것 같습니다.
  • 프로필사진 수강생 2018.08.02 11:54 신고 안녕하세요. 지난주에 OpenCV 교육을 들었던 수강생입니다
    pip install을 이용해서 설치하려고 하면
    자꾸 IOError: Could not find a suitable TLS CA certificate bundle, invalid path: samsung.crt
    이런 에러가 발생하는데 어떤 문제인지 잘 모르겠어서 질문남깁니다 ㅠㅠ......
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.08.16 20:49 신고 아마 삼성전자 직원이신것 같습니다.
    samsung.crt 파일 경로가 올바르지 않다는 메시지 인데요. 보안 프로그램에서 samsung.crt 파일을 다운로드 한 뒤에 해당 파일이 있는 곳으로 프롬프트를 이동해서 명령어를 실행해야 합니다.
  • 프로필사진 이민영 2018.08.09 01:00 신고 감사합니다. 덕분에 시간을 많이 절약했습니다.
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.08.16 20:47 신고 네. 댓글 고맙습니다.
  • 프로필사진 김현우 2018.08.16 20:24 신고 안녕하세요. 감사하게도 덕분에 빠른시간내에 opencv를 설치하게 되었습니다. 카메라도 연결되어 찍히는것을 확인했구요. 그런데 제시된바와 같이 컴파일을 하고 실행을 하니 에러가 뜨는데 Locale not supported by C library. Using the fallback 'C' locale. 이라고 뜹니다 ㅠ 뒤에는 OpenCV Error : Assertion failed in imshow. 이런식으로 쫙 뜹니다. 해결방법 알고 계신지요 ㅠ 감사합니다.
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.08.16 20:47 신고 해당 에러는 저도 정확히 모르겠습니다만, locale 설정 때문인것 같습니다.
    아래 명령어를 실행하고 다시 시도해 보시면 어쩌면 될지도 모르겠습니다.

    export LC_ALL=C
  • 프로필사진 문지훈 2018.08.28 00:21 신고 설치를 한 다음에 pkg-config —modversion opencv를 입력하면 'Unkown option -modversion 이라고 뜨는데 뭐가 잘못된걸까요?
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.10.02 00:24 신고 옵션에 "--modversion" 입니다.
    하이픈이 하나가 아니라 2개 입니다.
  • 프로필사진 급합니다 2018.09.22 00:12 신고 https://github.com/dltpdn/opencv-for-rpi 라고 터미널에 입력했는데, 아이디와 비번을 물어보는데, 어떻게 해결해야 하나요?
    그래서 일부로 수동으로 파일을 다운받았는데 cd opencv-for-rpi-master 를 터미널에다 입력했는데 파일 디렉토리를 찾을수 없다고 뜹니다. 이걸 어떻게 처리해야 하나요
  • 프로필사진 Favicon of http://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.10.02 00:27 신고 터미널에 주소만 입력하면 계정과 비밀번호를 물어 보는것에 대해서는 제가 이해할 수 없는 질문입니다. 좀 더 자세한 설명이 필요하구요.
    수동(?)으로 다운로드 받으면 zip 파일로 받았을 텐데 압축을 풀어서 cd 명령을 해야 할겁니다.

    원하시는 답변이 되지 못한것 같아 미안합니다.
댓글쓰기 폼