http://webnautes.tistory.co m/916 OpenCV 4.5.1과 opencv_contrib(extramodules)을 컴파일하여 RaspberryPi4에 설치하는 방법을 다룹니다. 1. 기존 OpenCV 버전을 삭제 2. 기존에 설치된 패키지 업그레이드.. webnautes.tistory.com 위의 블로그를 참고하여 opencv를 설치하는 제 기록
설치하는데 걸리는 시간은 총 1시간 반 정도!
명령어가 복잡해서 복사를 추천합니다.기존 패키지를 업데이트/업그레이드해 줍니다.pi@minjoo: ~$sudo apt updatepi@minjoo: ~$sudo apt upgrade
다음 재부팅 하겠습니다.pi@minjoo: ~$sudo shutdown-rnow
참고 블로그에서는 sudor reboot이었는데 Networkerror가 나와서 저는 위와 같이 했습니다.
OpenCV 컴파일 시 필요한 패키지 설치
build-essential 패키지에는 C/C+ 컴파일러와 관련 라이브러리, make와 같은 도구가 포함되어 있는 cmake는 컴파일 옵션이나 빌드된 라이브러리에 포함할 OpenCV 모듈 설정 등을 위해 필요 pi@minjoo: ~$sudoaptinstallbuild-essential cmake
특정 포맷의 이미지 파일을 가져오거나 저장하는 데 필요한 패키지 설치 pi@minjoo: ~$sudoaptinstalllibjpeg-devlibtiff5-devlibjasper-devlibpng-dev
모르는게 위와 아래 같은 명령어인데 왜 처음에는 못찾지만 두번째는 되는건지..?
특정 코덱의 비디오 파일/스트리밍을 가져오거나 기록하기 위해 필요한 FFmpeg 관련 패키지 pi@minjoo: ~$sudoaptinstalllibabcodec-devlibabformat-devlibswscale-devlibxvidcore-devlibx264-devlibxine 2-dev
Video 4 Linux 패키지는 Linux에서 실시간 비디오 캡처를 지원하기 위한 장치 드라이버 및 API를 포함하는 pi@minjoo: ~$sudoaptinstalllibv4l-dev4l-utils
여기서 또 이상한 점.
libx4l에서 L(영어엘)인거 같은데 입력해도 안돼 혹시 I(영어아이)인지 시도해봤는데 아니야. 복사해서 쓰면 됩니다.
특정 코덱의 비디오 파일/스트리밍을 읽거나 기록하는 데 필요한 GS treamer 관련 패키지 pi@minjoo: ~$sudoaptinstalllibgstreamer 1.0-devgstreamer 1.0-devgstreamer 1.0-plugins-badgstreamer 1.0-plugins-badgstreamer 1.0-plugins-badgstreamer 1.0-plugins-gstreamer 1.0-plugins-gly
OpenCV에서는 highgui 모듈을 사용하여 독자적으로 Windows를 생성하고 이미지나 영상을 표시하는 윈도우 생성 등의 GUI를 위해 gtk 또는 qt를 선택하여 사용가능, 본고에서는 gtk2를 사용하는 pi@minjoo: ~$sudoaptinstalllibgtk2.0-dev
OpenGL을 지원하기 위해 필요하므로 이브랠리 pi@minjoo:~$sudoaptinstallmesa-utilslibgl1-mesa-drilibgtkgl 2.0-devlibgtkglext1-dev
OpenCV 최적화를 위해 사용되는 라이브러리 pi@minjoo: ~$sudoaptinstalllibatlas-base-devgfortranlibeigen3-dev
python2.7-dev와 python3-dev 패키지는 파이썬을 위한 헤더 파일과 라이브러리가 포함된 패키지 Numpy는 매트릭스 연산 등을 신속하게 처리할 수 있으며 OpenCVPython에서 사용되는 pi@minjoo: ~$sudoaptinstallpython3-devpython3-numpy
소스 코드를 저장할 임시 디렉토리를 생성하여 이동 후 진행 pi@minjoo: ~$mkdiropencvpi@minjoo: ~$cdopencvpi@minjoo: ~/opencv$
OpenCV 4.5.1 소스 코드를 다운로드하여 압축 풀기 pi@minjoo: ~ /opencv$wget-Opencv.zip http://github.com/opencv/opencv/archive/4.5.1.zippi@minjoo: ~ /opencv$unzipopencv.zip
opencv_contrib(extramodules) 소스 코드를 다운로드하여 압축을 푸는 SURF 등을 사용하기 위해 필요 pi@minjoo:~/opencv$wget-Opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.1.zippi@minjoo: ~/opencv$unzipopencv_contrib.zip
이렇게 설치되어 있는 것을 확인할 수 있습니다.
opencv-4.5.1 디렉토리로 이동하여 build 디렉토리를 생성하고, build 디렉토리로 이동 컴파일은 buile 디렉토리에서 이루어진다.pi@minjoo:~/opencv$cdopencv-4.5.1pi@minjoo: ~/opencv/opencv-4.5.1$mkdirbuildpi@minjoo: ~/opencv/opencv-4.5.1$cdbuildpi@minjoo: ~/opencv-4.5.1/buildpi@minjoo: ~/opencv-4.5.1/buildpi@minjoo:
cmake를 사용하여 OpenCV컴파일 설정 복제해서 쯔세 유한 cmake-DCMAKE_BUILD_TYPE=RELEASE-DCMAKE_INSTALL_PREFIX=/usr/local-DWITH_TBB=OFF-DWITH_IPP=OFF-DWITH_1394=OFF-DBUILD_DEBUG_INFO=OFF-DBUILD_CSONSILL=DANSILL=DANS_DAM=ON-D WITH_QT=OFF-D WITH_GTK=ON-D WITH_OPENGL=ON-D OPENCV_ENABLE_NONFREE=ON-D OPENCV_EXTRA_MODULES_PATH=…/../opencv_contrib-4.5.1/modules-D WITH_V4L=ON-D WITH_FFMPEG=ON-D WITH_XINE=ON-DENABLE_PRECOMPILED_HEADERS=OFF-D BUILD_NEW_PYTHON_SUPPORT=ON-DOPENCV_GENERATE_PKGCONFIG=ON../
이렇게 나오면 완료.
진행 전 스왑 공간을 늘려야 하므로 멀티코어를 사용하여 컴파일 시 메모리 부족으로 오류가 발생하지 않음 pi@minjoo : ~~/opencv/opencv-4.5.1/build$sudonano/etc/dphys-swapfile
CONF_SWAP SIZE 변수 값을 100에서 2048로 수정한다.
free로 확인해보니 현재 스와프가 100메가
스왑 관련 서비스 재부팅 pi@minjoo : ~ /opencv /opencv-4.5.1 / build$sudo /etc /init.d /dphys-swapfilerestart Restartingdphys-swapfile (viasystemctl) : dphys-swapfile.service. << 이렇게 나와야함
스와프가 2048 메가로 전환되다
make 명령을 사용하여 컴파일 시작-j4 옵션을 부여하고 우선 진행 pi@minjoo: ~ /opencv /opencv-4.5.1 / build$timemake-j4
★여기서 한시간정도 걸립니다.★
만약 문제가 발생하면 Ctrl+C에서 멈추고 pi@minjoo:~/opencv/opencv-4.5.1/build$make 이렇게 재부팅
컴파일 결과 설치 pi@minjoo : ~ /opencv /opencv-4.5.1 / build$sudomake install
샘플 코드는 /usr/local/share/opencv4/samples/에 복사된다
opencv 라이브러리를 찾을 수 있도록 명령 실행(소문자 엘) pi@minjoo: ~ /opencv /opencv-4.5.1 / build$sudoldconfig
다음/etc/dphy-swapfile을 열어 pi@minjoo: ~/opencv/opencv-4.5.1/ build$sudonano/etc/dphys-swapfileCONF_SWAP SIZE 변수 값을 다시 2048에서 100으로 바꾼다.
아까와 같이 서비스를 재부팅하여 변경된 설정을 반영해주시면 pi@minjoo:~/opencv/opencv-4.5.1/build$sudo/etc/init.d/dphys-swapfilerestart
스왑 크기가 원래대로 돌아가는 python3에서 opencv 라이브러리를 사용할 수 있는지 확인
4.5.1 나오면 제대로 다운로드 된 거예요.만약 안되면 중간에 명령이 제대로 내려지지 않은 것이 있을 겁니다.삭제하고 다시 설치하면서 제대로 설치되었는지 확인하면서 하나하나 해보시길 권합니다.오류가 나는 부분에서 왜 문제인지 구글에서 검색하면서 찾으면 설치가 가능할 것 같습니다.
라즈베리 파이 카메라 접속법과 접속 확인법은 다음 게시물에 씁니다.