Help us understand the problem. What is going on with this article?

GoCVを試すまでのお話

OpenCV4が正式にリリースされたみたいですね。
弊社のサーバチームではGo言語をメインに使っていることもあり、僕も専らGo言語でお仕事しています。GoからOpenCV4を簡単に使えないかなぁと検索するとGoCVなるものを見つけました。ちゃんとOpenCV4に対応しているようです。素晴らしい。

というわけでC++でもpythonでもなく、GoCVを使ってGoからOpenCV4を使ってみます。

OpenCV4のビルド&インストール

今回はmacOSを前提としているので、OpenCV4のビルドとインストールに関してはこちらのページを参考にしました。
pkgconfigのインストールやpython環境の事前準備等は上記ページに任せて説明を端折りますが、今回は以下のようにcmakeします。

cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=/path/to/opencv_contrib-4.0.0/modules \
    -D PYTHON3_LIBRARY=`python -c 'import subprocess ; import sys ; s = subprocess.check_output("python-config --configdir", shell=True).decode("utf-8").strip() ; (M, m) = sys.version_info[:2] ; print("{}/libpython{}.{}.dylib".format(s, M, m))'` \
    -D PYTHON3_INCLUDE_DIR=`python -c 'import distutils.sysconfig as s; print(s.get_python_inc())'` \
    -D PYTHON3_EXECUTABLE=/path/to/.pyenv/shims/python \
    -D PYTHON3_NUMPY_INCLUDE_DIRS=/path/to/.pyenv/versions/3.6.3/lib/python3.6/site-packages/numpy/core/include \
    -D PYTHON3_PACKAGES_PATH=/path/to/.pyenv/versions/3.6.3/lib/python3.6/site-packages \
    -D BUILD_opencv_python2=OFF \
    -D BUILD_opencv_python3=ON \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D INSTALL_C_EXAMPLES=OFF \
    -D OPENCV_ENABLE_NONFREE=ON \
    -D BUILD_EXAMPLES=ON ..

makeしてsudo make install後、PKG_CONFIG_PATHを適宜設定しておきます。

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

オフィシャルなOpenCV4のpkgconfigのファイルが見つからなかったので、こちらのページを参考に以下の内容のopencv4.pcというファイルを自作して/usr/local/lib/pkgconfigに配置します。

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

GoCVのインストール

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

Hello GoCV

正しくOpenCVとGoCVがインストールされたかどうかを確認するためにGoCVのサンプルプログラムを動かしてみます。

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

以下のような結果が出力されれば成功です。

gocv version: 0.18.0
opencv lib version: 4.0.0

他にもgocvのリポジトリのcmdディレクトリの中に色々参考になるGoのプログラムがあります。今度はhelloを動かしてみます。

go run ./cmd/hello/main.go

windowが開いてカメラの映像が見れます。OpenCVを使っている実感が湧いてきます。

短いですが、今回はここまで。
他にもサンプルコードがgocvのリポジトリにあるので参考になります。

$ ls -1 gocv/cmd
README.md
basic-drawing/
caffe-classifier/
captest/
capwindow/
counter/
dnn-detection/
dnn-pose-detection/
dnn-style-transfer/
faceblur/
facedetect/
find-circles/
find-lines/
hand-gestures/
hello/
img-similarity/
mjpeg-streamer/
motion-detect/
openvino/
saveimage/
savevideo/
showimage/
ssd-facedetect/
tf-classifier/
tracking/
version/

僕自身Goから画像処理する必要があるのかわかりませんが、とりあえず動作したのを確認できました。
時間があるときにでも画像処理関連で何かしてみたいところです。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away