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から画像処理する必要があるのかわかりませんが、とりあえず動作したのを確認できました。
時間があるときにでも画像処理関連で何かしてみたいところです。