Raspberry piにGoとgocv(OpenCV 4)環境をインストールする
はじめに
副業で画像処理プログラムを書くことになりました。 久しぶりに頂いた話なので結構ウキウキしています。 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のインストール手順です。