관리 메뉴

악보쓰는 프로그래머

라즈베리파이 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 띄우기 포스트를 참고하세요.

끝.


57 Comments
  • 이전 댓글 더보기
  • 프로필사진 수강생 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 https://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 https://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.08.16 20:49 신고 아마 삼성전자 직원이신것 같습니다.
    samsung.crt 파일 경로가 올바르지 않다는 메시지 인데요. 보안 프로그램에서 samsung.crt 파일을 다운로드 한 뒤에 해당 파일이 있는 곳으로 프롬프트를 이동해서 명령어를 실행해야 합니다.
  • 프로필사진 이민영 2018.08.09 01:00 감사합니다. 덕분에 시간을 많이 절약했습니다.
  • 프로필사진 Favicon of https://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 https://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 https://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 https://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.10.02 00:27 신고 터미널에 주소만 입력하면 계정과 비밀번호를 물어 보는것에 대해서는 제가 이해할 수 없는 질문입니다. 좀 더 자세한 설명이 필요하구요.
    수동(?)으로 다운로드 받으면 zip 파일로 받았을 텐데 압축을 풀어서 cd 명령을 해야 할겁니다.

    원하시는 답변이 되지 못한것 같아 미안합니다.
  • 프로필사진 gustjs8485 2018.11.10 20:00 sudo apt install -y ./OpenCV*.deb
    이거를 치면 Reading package lists... Done
    E : Unsupported file ./OpenCV*.deb given on commandline 이라고 뜨는데 뭐가 문젠지 잘모르겠습다..
  • 프로필사진 Favicon of https://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.11.11 13:32 신고 글쎄요. 아마도 설치 파일인 deb 파일이 깨진것 같습니다. 다시 다운로드 받아서 시도해 보시면 될것 같아요.
  • 프로필사진 감사합니다 2018.11.13 20:12 감사합니다..ㅠㅠ 다른 사이트 참고하고 4일동안 opencv build 시도했는데 실패하다가, 블로거님의 글을 참고하고 한 번 만에 성공했습니다. 좋은 자료 올려주셔서 정말정말 감사합니다!
  • 프로필사진 Favicon of https://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.11.15 11:08 신고 도움이 되셨다니 저도 기쁩니다.
  • 프로필사진 조호연 2018.11.13 22:06 안녕하세요 올려주신 자료를 보고 설치를 한 학생입니다. 다 설치를 한후 python을 켜서 import cv2를 입력하니까
    ibhdf5_serial.so.100: cannot open shared object file: No such file or directory
    이런 에러가 뜹니다 어떻게 해결해야 할까요?
  • 프로필사진 Favicon of https://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2018.11.15 11:15 신고 제 생각에는 제가 배포한 파일로 설치한것이 아니라 piwheel 이라고 최신 라즈베리파이의 pip 설치 레포지 토리로 부터 설치하신것 아닌가 합니다.
    piwheel 배포 파일은 종속 라이브러리 문제가 심해서 저도 이렇게 별도로 빌드하고 있습니다.

    종속 라이브러리가 설치되지 않은 것이니 아래 명령어로 추가 설치하시고 실행해 보세요.

    sudo apt update
    sudo apt install libhdf5-dev
    sudo apt install libhdf5-serial-dev

    위 종속 라이브러리 에러가 해결되어도 다른 라이브러리가 없다고 또 에러가 날 가능성이 높습니다.
    좋은 성과 있기를 바랍니다.
  • 프로필사진 조호연 2018.11.15 22:34 라이브러리들을 다 찾아서 설치하였더니 해결되었습니다! 감사합니다!
  • 프로필사진 쇼옴유저 2018.12.30 18:56 https://github.com/sjun1019/opencv-for-rpi
    4.0.0 추가했는데요
    패키징이 잘 된건지 확인해주세요
  • 프로필사진 이성준 2019.01.02 20:59 와..정말 훌륭한 정보와 글에 감사드립니다 ㅠㅠ 몇일을 설치문제부터 힘들어했는데 잘 정리되어있어 사막에 오아시스 같네요
    선생님 그런데 오류가 하나 있습니다. 첫번째 스텝인 opencv설치 후에 python으로 버전을 확인하는 과정에서 오류가 발생했어요
    ImportError : No module named 'cv2' 라는 오류가 발생했는데 어떻게 고칠 수 있을까요??

    분명히 설치과정은 오류없이 잘 진행되었는데 왜 찾을 수 없는지 의아합니다...
  • 프로필사진 Favicon of https://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2019.01.03 00:33 신고 import Error 라면 설치가 제대로 진행되지 않은것으로 봐야 할것 같습니다. 도움이 되지 못해 죄송합니다.
  • 프로필사진 이성준 2019.01.03 10:43 아니요 죄송하지 않으셔도 괜찮습니다!
    한가지만 더 질문하고싶어요 혹시 설치 후에 환경변수나 경로설정을 해주어야 하는 부분이 있을까요?
    설치는 잘 진행이 되었지만 import 하는 부분에서 잘못된 경로에서 import를 하는 것이 아닐까 의문이 들어서 여쭤봅니다
  • 프로필사진 Favicon of https://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2019.01.03 15:57 신고 일반적이라면 따로 환경변수 등을 설정해야 하는 일은 없습니다.

    /usr/lib/python3.5/dist-packages/ 디렉토리에 cv2.cpython-35m-arm-linux-gnueabihf.so 파일이 있는지 확이해 보세요.
    설치 과정에서 해당 디렉토리에 해당 파일이 복사되어야 합니다.
  • 프로필사진 이성준 2019.01.03 16:59 네 해당경로 들어가서 확인해봤는데 파일이 있네요 선생님!
    그런데 왜 찾지 import하지 못할까요? 콘솔창에서 뭔가 잘못된걸까요?
    저의 라즈비안 콘솔창의 파이썬 버전은 3.4.3 이구요

    정보를 추가로 찾아보면서
    pkg-config --modversion opencv 를 입력해보면 3.4.0으로 버전이 잘 나오는데
    왜 import에서 오류가 발생할까요?

    번거롭게 많은 질문을 드린것 같아서 정말 죄송하게 생각합니다 ㅠㅠ
  • 프로필사진 Favicon of https://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2019.01.03 17:15 신고 python 버전이 3.4.3 이라면 제가 배포해 드린 설치 파일은 파이썬 3.5 버전이기 때문에 정상적인 로드가 되지 않을 겁니다. 아래의 명령으로 파이썬 버전을 데비안 배포 최신 버전(3.5)으로 업그레이드 하신 후 다시 설치 부터 진행해 보세요.

    sudo apt-get update
    sudo apt-get --only-upgrade install python3
  • 프로필사진 이성준 2019.01.04 18:55 선생님 질문에 답변해주셔서 정말 감사합니다.
    말씀하신대로 진행해보았지만 잘 해결되지 않았었지만 좀 더 정보를 찾아보고 잘 해결하게 되었습니다.
    https://www.youtube.com/watch?v=ZuhPzP5lt9U
    참고했던 영상과 정보인데요 도움에 감사드리며 글에 조금이나마 보충이 될까하여 링크를 첨부하여 댓글을 작성했습니다.
    좋은 글과 도움에 감사드립니다~~
  • 프로필사진 Favicon of https://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2019.01.15 21:48 신고 좋은 정보 고맙습니다.
  • 프로필사진 이성제 2019.01.15 19:56 감사합니다. 최고에요
  • 프로필사진 Favicon of https://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2019.01.15 21:48 신고 댓글 고맙습니다.
  • 프로필사진 감사합니다 2019.02.18 12:28 안녕하세요 !!
    혹시 비주얼스튜디오로 컴파일해서 테스트(물론 opencv 라이브러리내부에 있는 함수와 gui만을 사용)한 파일을
    그대로 라즈베리파이에서 재 컴파일가능한가요??
  • 프로필사진 Favicon of https://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2019.02.19 20:15 신고 제가 비주얼 스튜디오와 친하지 않아서 해보지는 않았는데요, include 하는 헤더가 표준 라이브러리와 opencv 것만 이라면 문제 없을것 같습니다.
    해보시고 알려 주시면 더 좋겠습니다.
  • 프로필사진 파이썬 오류 2019.04.15 16:50 설치 후 파이썬에서 위 코드와 같이 입력했는데 Traceback (most recent call last):
    File "/home/pi/103.py", line 7,in <module>
    cv2.imshow('IMG', img)
    cv2.error: /home/pi/opencv/opencv-3.3.0/modules/highgui/src/window.cpp:333:error: (-215) size.width>0 && size.height>0 in function imshow
    라고 나오는 이유가 무엇인가요?
  • 프로필사진 Favicon of https://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2019.04.23 11:28 신고 img 를 읽은 파일의 경로를 확인해 보세요.
    이미지 파일을 제대로 읽지 못했을 때 나타나는 오류 입니다.
  • 프로필사진 버드아이 2019.07.26 03:10 블로그 글을 보고 따라하는데 .deb파일이 5가지 중에 4가지만 되고 opencv-libs 이게 의존성문제로 설치가 안되는데 해결할 방법이 있을까요?

    opencv-libs : 의존: libavcodec57 (>= 7:3.2.5) 하지만 설치할 수 없습니다 혹은

    libavcodec-extra57 (>= 7:3.2.5) 하지만 설치할 수 없습니다

    의존: libavformat57 (>= 7:3.2.5) 하지만 설치할 수 없습니다

    의존: libavutil55 (>= 7:3.2.5) 하지만 설치할 수 없습니다

    의존: libswscale4 (>= 7:3.2.5) 하지만 설치할 수 없습니다

    E: 문제를 바로잡을 수 없습니다. 망가진 고정 패키지가 있습니다.



    이렇게 나옵니다. 본문의 글이랑 댓글들 살펴보면서 나온 명령어들 해봤는데 안되는데, 다른 해결방법있으면 알려주시면 감사하겠습니다.
  • 프로필사진 Favicon of https://blog.xcoda.net BlogIcon dltpdn@gmail.com 이세우 2019.09.16 11:21 신고 이 블로그 포스팅에 올려진 내용은 라즈비안 스트레치(Raspbian Stretch) 버전을 기준으로 작성되어 있습니다. 혹시 Burster 버전을 사용하고 계신게 아닌지 의심됩니다.

    만약 그렇다면 https://github.com/dltpdn/opencv-for-rpi/releases/tag/3.4.5-buster 에서 Burster 버전에 맞게 빌드된 설치 파일을 받을 수 있습니다. 설치 과정은 동일합니다.
  • 프로필사진 굿럭 2019.09.27 23:59 설치가 정말 번거로운데.... 시간을 많이 아꼈습니다. 감사하빈다.
  • 프로필사진 hh 2019.10.02 01:43 sudo apt install -y ./OpenCV*.deb 이부분에서
    E: Unsupported file /OpenCV*.deb given on commandline 라고 나옵니다.
    뭐가 잘못된 걸까요??
    그리고 책에서는 sudo apt -y install ./OpenCV*.dev 라고 적혀있던데 dev 랑 deb랑 다른 건가요??

    제가 buster 버전이라 안되는건가요?
    그래서 https://github.com/dltpdn/opencv-for-rpi/releases/tag/3.4.5-buster
    에 들어가서
    1.sudo apt update
    2.tar -zxvf OpenCV-3.4.5-Buster.tar.gz
    3.sudo apt install -y ./OpenCV*.deb
    4.pkg-config --modversion opencv
    5.python3
    이걸 입력해도 설치가 잘 되지 않는건 어떤 문제인건가요??

댓글쓰기 폼