2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RaspberryPi4にOpenCVをインストールする。

Last updated at Posted at 2020-04-16

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-swapfilを再起動

$ 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
$ sudo apt install ant 

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]ボタンをクリックする。
cmak2.png

CMakeSetupダイアログが表示されるので[Finish]ボタンをクリックする。
cmak3.png

こんな感じでセットアップが開始される。
cma4.png

セットアップが終了
cmak5.png

OPENCV_EXTRA_MODULES_PATHを追加する。
wgetしたopencv_contrib-3.4.1/modulesを指定する。
cmak6.png

WITH_OPENGLにチェックを入れ、[Configure]ボタンをクリック
cmak7.png

Configuring doneが表示されたら[Generate]ボタンをクリック
cmak8.png

Generatin doneが表示されたらビルドの前処理は終了。
画面を閉じターミナルへ戻る。
cmak9.png

$ 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 $ 

openCV4.10.0をビルド

3.4系とほぼ同様だがOPENGL周りで何やらwarningが出たが一旦無視して
ビルドを実行してみる。


[100%] Linking CXX executable ../../bin/opencv_test_gapi
[100%] Built target opencv_test_gapi
[100%] Linking CXX shared module ../../lib/python3/cv2.cpython-311-aarch64-linux-gnu.so
[100%] Built target opencv_python3    

ビルド終了

C++のサンプルをコンパイルしてみる。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?