Elsaの技術日記(徒然なるままに)

主に自分で作ったアプリとかの報告・日記を記載

MENU

Go言語へのGoCV(OpenCV)インストール手順


今回はGo言語でOpenCVを利用するための環境構築についてです。

最近OpenCVネタが続いてしまっていますが、、、
OpenCV結構面白くてハマってしまっていますww。

詳解 OpenCV 3 ?コンピュータビジョンライブラリを使った画像処理・認識

新品価格
¥7,480から
(2020/9/21 10:20時点)

そろそろWebも進めたいのですが、まぁ両方やっていこうかな?w


で、本題ですがGo言語でのOpenCV利用のための環境構築を試してみたのでそれをまとめておきます!!
今後、サーバーサイドでGo言語使っていきたいな!!と思っているのでOpenCVもGo言語で使えたらいいな!と思い、試してみました。

ただ、結構ハマってしまい苦労した。。。
いくつかのサイトで手順紹介されているのですが、全くうまくいかず、、
3~4時間溶かしてしまいました泣。
また同じところで詰まるのは避けたいので、まとめておきます!!泣

OpenCVインストール

pythonの場合には、

 pip install opencv-python

を用いればよいのですが、Go言語の場合にはOpenCVソースコードのビルドから実施しなければならないです。

gihubからソースコードをgetしてcmake、buildしてもよいのだが、、、
今回は下記の通り、シェルスクリプトを用います!!
シェルスクリプトだと少ないコマンドで実行可能なので、楽!!

まずはシェルスクリプトを取得。

wget --no-check-certificate https://raw.githubusercontent.com/milq/milq/master/scripts/bash/install-opencv.sh

その後、シェルスクリプトを実行してOpenCVをインストールまで実行!!

sudo chmod +x install-opencv.sh
sudo ./install-opencv.sh

■GoCVインストール

Go言語でのOpenCVはGoCVというようです。
https://gocv.io/

このGoCVのインストール手順です。
まずインストールですが、こちらを実行。

go get -u -d gocv.io/x/gocv

ここで、pgkconfigにopencvのパスを通さなければならないため、
こちらを実行。

export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"

また、>||/usr/local/lib/pkgconfig||<配下にopencv4.pcがない場合には新規でopencv4.pcの作成が必要です。
opencv4.pcを新規作成の上、こちらを記載。

prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: opencv4
Description: The opencv library
Version: 4.0.0
Cflags: -I${includedir}/opencv4
Libs: -L${libdir} -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_calib3d -lopencv_ccalib -lopencv_core -lopencv_datasets -lopencv_dnn -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_features2d -lopencv_flann -lopencv_fuzzy -lopencv_gapi -lopencv_hfs -lopencv_highgui -lopencv_img_hash -lopencv_imgcodecs -lopencv_imgproc -lopencv_line_descriptor -lopencv_ml -lopencv_objdetect -lopencv_optflow -lopencv_phase_unwrapping -lopencv_photo -lopencv_plot -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_superres -lopencv_surface_matching -lopencv_text -lopencv_tracking -lopencv_video -lopencv_videoio -lopencv_videostab -lopencv_xfeatures2d -lopencv_ximgproc -lopencv_xobjdetect -lopencv_xphoto

これでOK!!と思っていた時代が私にもありました泣。

これでサンプルソースを動かせばよいよ。ってこちらの参考に書いてあったので試しに実施してみたのですが、
GoCVを試すまでのお話 - Qiita
GOCVを使ってみた - Qiita


エラー。。。
バージョンを変えて再実施してみるも、、、
エラー。。。

どうやら、gocv内のファイルも>||make install<||しなければならないようです!!
Install on Ubuntu 18.04 failed · Issue #448 · hybridgroup/gocv · GitHub

早速、

cd $GOPATH/src/gocv.io/x/gocv
make install

を実行!!
※もし$GOPATHが分からず、gocvがどこにあるか分からない場合には、

sudo find / -name "gocv"

を実行すればパスがわかります。

■サンプルプログラム実行

公式にてサンプルプログラムが用意されているのでありがたく使わせていただく。

git clone https://github.com/hybridgroup/gocv
cd gocv
go run ./cmd/version/main.go

実行した結果、gocvやopencvのバージョンが表示されればインストールは成功です!!

gocv version: 0.24.0
opencv lib version: 4.4.0

■最後に

案外苦労したけど、最後はうまくいったのでよしとします!!

サンプルプログラム内を確認すると、
こんなに種類があるので、色々試しに動かしてみようかな?と思います。
後、djangoで実施したストリーミングをgo言語版でも試してみようかな?とも考えております!!
出来れば、OpenCV使ったWebアプリとか作れたらいいな~~。何作ろうかな??

README.md
basic-drawing
caffe-classifier
captest
capwindow
counter
cuda
dnn-detection
dnn-pose-detection
dnn-style-transfer
faceblur
facedetect
facedetect-from-url
find-chessboard
find-circles
find-lines
hand-gestures
hello
img-similarity
mjpeg-streamer
motion-detect
openvino
saveimage
savevideo
showimage
ssd-facedetect
tf-classifier
tracking
version