GUST NOTCH? DIARY

ArUco というのを試してみた

OpenCV ベースで実装されている AR ライブラリがあるらしい。

とりあえず、Windowsで動かせるか試してみた。OpenCV 2.1 以上が要求されている。以前ビルドした OpenCV 2.2 と VS2008 でやってみた。CMakeがあるけど、エラーが出まくるので自前でやってみた。
まず、ライブラリを作る。aruco.lib というのを作ることにする。必要なファイルは以下のもの。

  • aruco.h
  • board.h
  • boarddetector.h
  • cameraparameters.h
  • cvdrawingutils.h
  • marker.h
  • markerdetector.h
  • board.cpp
  • boarddetector.cpp
  • cameraparameters.cpp
  • cvdrawingutils.cpp
  • marker.cpp
  • markerdetector.cpp

新規プロジェクトを作成して、上記のファイルを追加する。ビルド時に引っかかったのは二箇所。markerdetector.cpp の 89行目の sqrt 関数のタイプが特定できないということだった。受ける変数が float だったので、sqrt の中身の式を float で cast することで解決した。もうひとつは、M_PIがないということだったので、_USE_MATH_DEFINES を立てる。
次に、マーカ検出を行う aruco_test.cpp を試してみた。追加したファイルは、

  • aruco_test.cpp
  • aruco.h
  • board.h
  • boarddetector.h
  • cameraparameters.h
  • cvdrawingutils.h
  • getopt.h
  • marker.h
  • markerdetector.h

すると、getopt.h がないといわれる。Windows にはないらしい。ライセンス的に問題なければ、どこかから getopt.c, getopt1.c, getopt.h を取ってきてプロジェクトに追加。include を適宜修正する。リンクに必要なものは以下のlib。

実行に必要な DLL は適宜配置する。
ソースと同じところで配布されているデータを使ってみたところ、ちゃんとマーカを検出できたようです。

GLまわりもちゃんと動くか後で試してみる。