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が出力されました。これで成功!(のはず)