WindowsでgolangからOpenCVを呼び出してみた
すんなりとできなかったのでメモ。
golangのコード
こういった感じでgolangからOpenCVをコールするサンプルコード。
package main
/*
#cgo pkg-config: opencv
#include <cv.h>
#include <highgui.h>
*/
import "C"
import "fmt"
import "unsafe"
func main() {
fmt.Println("Hello World!")
text := C.CString("Hello World!")
defer C.free(unsafe.Pointer(text))
C.cvNamedWindow(text, 1)
img := unsafe.Pointer(C.cvCreateImage(C.cvSize(640, 480), C.IPL_DEPTH_8U, 1))
C.cvSet(img, C.cvScalar(0, 0, 0, 0), nil)
var font C.CvFont
C.cvInitFont(&font, C.CV_FONT_HERSHEY_SIMPLEX|C.CV_FONT_ITALIC, 1.0, 1.0, 0, 1, 8)
C.cvPutText(img, text, C.cvPoint(200, 400), &font, C.cvScalar(255, 255, 0, 0))
C.cvShowImage(text, img)
C.cvWaitKey(0)
}
MinGW-w64をインストール
http://mingw-w64.sourceforge.net/download.php
Mingw-builds project - native toolchains using trunkのものをSourceForgeからダウンロード。
x86_64を指定して、golangを64bitで揃える。(揃えないと動かなかった。。。)
環境変数を設定
PATH: C:\Program Files\mingw-w64\x86_64-4.9.1-posix-seh-rt_v3-rev0\mingw64\bin;
OpenCVをインストール
http://opencv.org/
OpenCV for Windowsをダウンロード。
圧縮ファイルなので実行すると展開されます。
C:/OpenCV/opencvXXXに展開(XXXばopencvのバージョン)
pkg-configを作成
C:\OpenCV\opencv249\opencv.pc を作成する。
# Package Information for pkg-config
prefix=C:/OpenCV/opencv249
exec_prefix=${prefix}/bin
libdir=${prefix}/build/x64/vc12/bin
includedir=${prefix}/build/include
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 2.4.9
Libs: ${libdir}/opencv_core249.dll ${libdir}/opencv_imgproc249.dll ${libdir}/opencv_highgui249.dll ${libdir}/opencv_ml2 49.dll ${libdir}/opencv_video249.dll ${libdir}/opencv_features2d249.dll ${libdir}/opencv_calib3d249.dll ${libdir}/ope n c v_objdetect249.dll ${libdir}/opencv_contrib249.dll ${libdir}/opencv_legacy249.dll ${libdir}/opencv_flann249.dll
Cflags: -I${includedir} -I${includedir}/opencv -I${includedir}/opencv2これでgoの「#cgo pkg-config: opencv」が読み込まれます。
Visual Studio 2013 の Visual C++ 再頒布可能パッケージをインストール
http://www.microsoft.com/ja-JP/download/details.aspx?id=40784
vcredist_x64.exeをダウンロード。
pkg-config(OpenCV)でvc12のdll(ライブラリ)を読み込んでいるのでVCのexeが必要。
参考:Device Updaterエラーメッセージ: MSVCP120.dllが見つからない (Windows)
http://www.native-instruments.com/jp/support/knowledge-base/show/2399/device-updater-msvcp120.dll-windows/
実行結果

別ウィンドウでhello worldが出力されました。これで成功!(のはず)