手順のメモを残しておく。
Windows7(64bit版)のPCで、Visual Studio 2013を使ってビルドした。
統合開発環境は使わず、自前でMakefileを書いてmakeでのビルドだ。
生成するバイナリは、32bitのタブレット機で動かす予定なので32bitバイナリを作る。
ArUcoのソースコードは aruco-2.0.14を使った。
ソースコードはいくつかのフォルダに分かれており、主にsrcフォルダに入っている。
ArUcoのビルドには、OpenCVという画像処理ライブラリが必要なので、ダウンロードする。
OpenCVのバージョン2.4.13を使用した。
OpenCVのライブラリのvc12用x86版のlibフォルダを、上記のarucoのフォルダにコピーする。
(※OpenCVをビルドするvcのバージョンとArUcoをビルドするvcのバージョンは合わせる必要がある。)
ヘッダファイルのopencvとopencv2のフォルダも同じくコピーする。
(※置き場所を変える場合は、Makefileも合わせて変更すること)
次に、
Makefileをsrcフォルダ内に作成する。
TARGET = ArUco OBJS = ar_omp.obj cameraparameters.obj checkrectcontour.obj cvdrawingutils.obj dictionary.obj \ ippe.obj marker.obj markerdetector.obj markerlabeler.obj markermap.obj posetracker.obj OBJS2 = markerlabelers/dictionary_based.obj markerlabelers/svmmarkers.obj OBJS2_ = dictionary_based.obj svmmarkers.obj CFLAGS = /c /MD /EHsc /I..\ /I../3rdparty\eigen3 .cpp.obj: cl $(CFLAGS) $< $(TARGET).lib: $(OBJS) $(OBJS2) lib /out:$(TARGET).lib $(OBJS) $(OBJS2_)
次のようなbatファイルでビルドした。
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86 nmake -f Makefile
これで、aruco.libファイルが生成できた。
makeコマンド一発でビルドできると気持ちいいと思う。
libファイルがちゃんと使えるかどうか、ArUcoのソースコードと一緒に付属しているサンプルをビルドして動かして確認する。
utilsフォルダ内にaruco_test.cppというソースがあるので、これをビルドする。
これもMakefileを使う。
TARGET = ArUco_test OBJS = aruco_test.obj LIBS = ../lib/opencv_core2413.lib \ ../lib/opencv_highgui2413.lib \ ../lib/opencv_calib3d2413.lib \ ../lib/opencv_flann2413.lib \ ../lib/opencv_imgproc2413.lib \ ../src/ArUco.lib CFLAGS = /c /MD /EHsc /I../ /I../src .cpp.obj: cl $(CFLAGS) $< $(TARGET).exe: $(OBJS) $(LIBS) link $(OBJS) $(LIBS) /OUT:$(TARGET).exe
aruco_test.exeという実行ファイルが生成できた。
動作確認は、テストデータとしてマーカー画像が必要だ。
ArUcoのサイトからaruco-test-data-2.0.zipをダウンロードする。
中のsingleフォルダのimage-test.pngを使う。
実行にはOpenCVのDLLが必要なので、opencv_core2413.dllとopencv_highgui2413.dllとopencv_calib3d2413.dllとopencv_flann2413.dllとopencv_imgproc2413.dllをaruco_test.exeと同じフォルダにコピーしておく。
aruco_test.exeを、
aruco_test live
として、起動すると、カメラの映像でテストできる。(カメラをPCに繋いでおくこと)
画面表示させたimage-test.pngをカメラで撮ると、マーカーが認識された。
—
ARジグソーパズルというのを作ろうとしている。
マーカーを沢山一度に認識するのをテストしてみた。
aruco-test-data-2.0.zipの中のmarkermapフォルダにあるmap.pngというデータを使う。
aruco_test.exeを、
aruco_test live -d ARUCO_MIP_36h12
として起動する。これでマーカー(のdictionary)を変更できる。
—
追記
ArUcoが、とりあえずデスクトップPCとwebカメラの組み合わせで動いたので、次にVivoTab8とかの軽量タブレット機で動かすのを試してみている。
しかし、処理が重く、マーカーを認識して表示される間隔が1秒近く掛かっていて実用にならない。
スマートフォンとかで動かしている人もいるみたいなので処理が軽いのかと思っていたら、誤算だったかも。(Surface3とかの処理能力の高いタブレット機でないと駄目なのかなあ? 持ってないけど。)
それとも、自分が知らないだけで何か高速化する設定とかあるのだろうか?
—
Ogaki Mini Maker Faire 2016に参加するので、これも展示用に持っていく予定だ。