Ubuntu 22.04 に GoCV(OpenCV)をインストールするときのあれこれ
golangでopencvを使いたくなったがその際のインストール関係で色々エラーが起きたので記録。
環境
Ubuntu 22.04LTS
go version go1.20.3 linux/amd64
goとopencvについて
opencvは画像、動画処理のソフトで公式ではgolangをサポートしていません。pythonでよく使われています。
しかしgolangにはGoCVというgolangでopencvを使えるようにしたラッパーがあるのでopencvとあわせてインストールすればgolangでもopencvを使えるようになります。ただしubuntuのせいなのか色々エラーが起こりまくったので記録します。
opencvのインストール
シェルスクリプトからのインストールがいくつかの記事で紹介されているんですがうまく行きませんでした。
ということで次の記事を参考にソースからビルドしていきます。一応やっていることはシェルスクリプトの実行とほとんど変わらないはず。
https://toolatescrap.hatenablog.com/entry/2022/11/29/003848
必要なパッケージをインストール。
sudo apt install -y cmake g++ wget unzip
opencvのサイトからsourceをダウンロードして解凍。
適当にビルド用のディレクトリを作成、移動。
mkdir build
cd build
cmake用の設定
cmake ../opencv-4.6.0
cmakeでビルド
cmake --build ./
数十分はかかります。
インストール
sudo make install
GoCVのインストール
基本的には公式にしたがって行う。
パッケージのインストール
go install gocv.io/x/gocv@latest
公式とか多くの記事ではgo get が使われていますがgoのバージョンアップに伴いgo installに変更になりました。それに伴って@latestをつけるようにしましょう。go installでは@のあとでバージョンの指定が必須です。latestにすると最新のものになります。とりあえずバージョン調べるのも面倒なので@latestで。
パッケージに移動。
cd $GOPATH/src/gocv.io/x/gocv
これでうまく行けばいいんですがgoのバージョンによって位置が違うので
sudo find -name gocv
とかで探しましょう。私の場合は
cd go/pkg/mod/gocv.io/x/gocv@v0.32.1
でした。
ここで
make install
するとおそらくエラーが出ます。原因はよくわからなかったのですがこれを参照してMakefileの"libdc1394-22-dev"を"libdc1394-dev"に置換します。ubuntuとの対応の問題ですかね。置換したらmake installでインストールされるはず。
gocv version:[]
opencv lib version:[]
とでれば成功。