Raspberry piにGoとgocv(OpenCV 4)環境をインストールする

markdown-img-paste-20210913223509281.webp
目次

はじめに

副業で画像処理プログラムを書くことになりました。 久しぶりに頂いた話なので結構ウキウキしています。 Pythonで書かれた旧ソフトが遅いのとQR Codeの読み取り精度が悪いということでその改善したソフトを納品してほしいとのこと。

実機(Raspberry pi)が届くまでにソフトを先行して作っておきたいというのもあります。 数ヶ月ぐらい前に大学院の友人から貰ったRaspberry piが転がってたのでこれを動かせるようにしていきましょう。

今回は、Gstreamerのインストール、Golangのインストール、OpenCVのインストールについてまとめています。

gstreamerのインストール

特別何も言うことはないですが、これでDLできます。 あとcmakeも入れておきます。 Gstreamerをインストールするために、以下のコマンドを実行してください。

sudo apt install cmake libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-tools libgtk2.0-dev gstreamer1.0-omx=1.0.0.1-0+rpi12+jessiepmg gstreamer1.0-plugins-bad gstreamer1.0-plugins-good

golangを入れる

aptでGolangをインストールすると、古いバージョンがインストールされてしまうため、自分でダウンロードしてインストールします。

wget https://golang.org/dl/go1.17.1.linux-armv6l.tar.gz
sudo tar -C /usr/local -xzf go1.17.1.linux-armv6l.tar.gz go/

システム変数にGoのパスを登録します。

vim ~/.bashrc

末尾にパスを追加しておきます。

export PATH=$PATH:/usr/local/go/bin

パスが導通していることを確認しましょう。

source .bashrc
which go
/usr/local/go/bin/go

こんな感じででればいいでしょう。

OpenCV 4.5.3をインストールする

OpenCVをインストールするために、gocvを使用します。gocvは、GoからOpenCV4を利用できるようにしたパッケージで、オープンソースです。

gocvをダウンロードしてMakefileを変更し、cmakeオプションにWITH_GSTREAMER=ONを追加します

ちなみにgocvとは、OpenCV4をGoから利用できるようにしたパッケージです。 パリピのGopher君が目印です。ふぅ最高にキュートだぜ…

GoCV Computer Vision using Go and OpenCV 4

インストールをしていきましょう、 DLします。

git clone https://github.com/hybridgroup/gocv.git

今回はGstreamerを使いたいのでオプションに追加します。 やり方は簡単で、Makefilesを書き換えます。

vim Makefiles

cmakeにこのオプションを追加します。

-D WITH_GSTREAMER=ON

書き換えるとこのようになります。

# Build OpenCV on Raspbian with ARM hardware optimizations.
build_raspi:
    cd $(TMP_DIR)opencv/opencv-$(OPENCV_VERSION)
    mkdir build
    cd build
    rm -rf *
- cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} -D OPENCV_EXTRA_MODULES_PATH=$(TMP_DIR)opencv/opencv_contrib-$(OPENCV_VERSION)/modules -D BUILD_DOCS=OFF -D BUILD_EXAMPLES=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_opencv_java=OFF -D BUILD_opencv_python=NO -D BUILD_opencv_python2=NO -D BUILD_opencv_python3=NO -D ENABLE_NEON=ON -D ENABLE_VFPV3=ON -D WITH_JASPER=OFF -D OPENCV_GENERATE_PKGCONFIG=ON ..
+ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} -D OPENCV_EXTRA_MODULES_PATH=$(TMP_DIR)opencv/opencv_contrib-$(OPENCV_VERSION)/modules -D BUILD_DOCS=OFF -D BUILD_EXAMPLES=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_opencv_java=OFF -D BUILD_opencv_python=NO -D BUILD_opencv_python2=NO -D BUILD_opencv_python3=NO -D ENABLE_NEON=ON -D ENABLE_VFPV3=ON -D WITH_JASPER=OFF -D OPENCV_GENERATE_PKGCONFIG=ON -D WITH_GSTREAMER=ON ..
    $(MAKE) -j $(shell nproc --all)
    $(MAKE) preinstall
    cd -

実行すると3時間から4時間程度お祈りビルドが走ります。

make install_raspi

ERROR対応

98%とかで動かなくなってしまったときはマジかお前ってなりましたね。 CPUを多くしてビルドを行うとメモリが足りないとかそんなエラーも出ます。

寝る前にビルドを始めるという前提であれば、以下のようなオプションでmakeするのは解決策の一つです。

-j 以降をすべて削除します。

- $(MAKE) -j $(shell nproc --all)
+ $(MAKE)

まとめ

完全に備忘録記事になってますが良いでしょう。 巷にあふれる内容の焼き直しですので、需要があるかわからないですが… 未来の自分用に残しておきましょう。

以上がGstreamer、Golang、OpenCVのインストール手順です。

Related Post

> Raspberry piにGoとgocv(OpenCV 4)環境をインストールする
Raspberry PiとGStreamerを使ってWebカメラ映像を配信する方法
> Raspberry piにGoとgocv(OpenCV 4)環境をインストールする
Raspberry Piのセットアップ記録と使い方のまとめ
> Raspberry piにGoとgocv(OpenCV 4)環境をインストールする
PCでPSVRのステレオカメラを使ってみた

おすすめの商品

>