RaspberryPi4에 OpenCV를 설치합니다.

5449 단어 RaspberryPi4OpenCV

RaspberryPi4에 openCV3.4.1을 설치할 때 비망록



파일 시스템을 확장합니다.


$ sudo raspi-config 
7 Advanced Options --> A1 Expand filesystem --> Finsh

swap을 늘립니다.


$ sudo vi /etc/dphys-swapfile

# set size to absolute value, leaving empty (default) then uses computed value
#   you most likely don't want this, unless you have an special disk situation
# CONF_SWAPSIZE=100
CONF_SWAPSIZE=2048

dphys-swapfile 재부팅


$ sudo /etc/init.d/dphys-swapfile stop
$ sudo /etc/init.d/dphys-swapfile start

이번에는 cmake-gui를 사용해 보자.


$ sudo apt install cmake-qt-gui

종속성이 있는 라이브러리를 설치합니다.


$ sudo apt install libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev
$ sudo apt install libv4l-dev v4l-utils libgtk2.0-dev 
$ sudo apt install libmesa-utils libgl1-mesa-dri libgtkglext1-dev libatlas-base-dev gfortran libeigen3-dev python-2.7-dev python3-dev python-numpy python3-numpy

Opencv3.4.1 빌드


$ wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.1.zip
$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.1.zip  
$ unzip opencv.zip
$ unzip opencv_contrib.zip
$ cd opencv-3.4.1
$ mkdir build 
$ cmake-gui

GUI가 표시되므로 소스 코드의 디렉토리와 빌드 디렉토리를 선택하고 [Configure] 버튼을 클릭합니다.


CMakeSetup 다이얼로그가 표시되므로 [Finish] 버튼을 클릭한다.


이런 식으로 설정이 시작된다.


설정 완료


OPENCV_EXTRA_MODULES_PATH를 추가합니다.
wget한 opencv_contrib-3.4.1/modules를 지정한다.


WITH_OPENGL을 체크하고 Configure 버튼을 클릭


Configuring done이 표시되면 [Generate] 버튼을 클릭


Generatin done이 표시되면 빌드의 전처리는 종료.
화면을 닫고 터미널로 돌아갑니다.

$ make -j4 

build 오류
cv2.cpp:889:34: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]

여기의 정보에 따르면
This version (and some older versions) don't compile (with Python3.7)
몇몇 낡은 버젼은 python3.7로 컴파일 할 수 없는 것 같다.
그래서
opencv-3.4.1/modules/python/src2/cv2.cpp의 889 행을 수정합니다.
bool pyopencv_to(PyObject* obj, String& value, const char* name)
{
   (void)name;
   if(!obj || obj == Py_None)
       return true;
-  char* str = PyString_AsString(obj);
+  const char* str = PyString_AsString(obj);
    if(!str)
       return false;
    value = String(str);
  return true;
}

수정 후 재빌드
$ make -j4
[100%] Linking CXX executable ../../bin/opencv_test_stitching
[100%] Building CXX object modules/stitching/CMakeFiles/opencv_perf_stitching.dir/perf/perf_estimators.cpp.o
[100%] Built target opencv_test_stitching
[100%] Building CXX object modules/stitching/CMakeFiles/opencv_perf_stitching.dir/perf/perf_main.cpp.o
[100%] Building CXX object modules/stitching/CMakeFiles/opencv_perf_stitching.dir/perf/perf_matchers.cpp.o
[100%] Building CXX object modules/stitching/CMakeFiles/opencv_perf_stitching.dir/perf/perf_stich.cpp.o
[100%] Linking CXX executable ../../bin/opencv_perf_stitching
[100%] Built target opencv_perf_stitching
[100%] Linking CXX shared module ../../lib/python3/cv2.cpython-37m-arm-linux-gnueabihf.so
[100%] Built target opencv_python3
[100%] Linking CXX shared module ../../lib/cv2.so
[100%] Built target opencv_python2
pi@raspberrypi:~/opencv-3.4.1/build$ 

빌드 성공

다음은 openCV4계를 빌드해 보자



그 전에 3.4.10 빌드를 시도하십시오.



3.4.10은 소스 수정없이 빌드 성공


$ make -j4 
[100%] Linking CXX executable ../../bin/opencv_test_tracking
[100%] Built target opencv_test_tracking
[100%] Linking CXX shared module ../../lib/python3/cv2.cpython-37m-arm-linux-gnueabihf.so
[100%] Linking CXX shared module ../../lib/cv2.so
[100%] Built target opencv_python3
[100%] Built target opencv_python2
pi@raspberrypi:~/opencv3/opencv-3.4.10/build $ 

좋은 웹페이지 즐겨찾기