読者です 読者をやめる 読者になる 読者になる

元派遣プログラマの自称技術系ブログです。雑記とか自作のオープンソースプロジェクトの話とか。
Javaとか組込とかできます。お仕事ください。

ARToolKit5をWindowsで動かすときの備忘録

ARToolKit

現時点での最新版 Version 5.3を動かすための備忘録。

要らないキャプチャドライバの無効化

QuickTimeとDSVideoはリンクエラーが起きたりするので無効化する。

config.h.inの359行目付近にあるAR_INPUT_QUICKTIME,AR_INPUT_WINDOWS_DSVIDEOLIBをコメントアウトする。

config.hを編集してもコンパイル時にvbscriptが走って上書きされるので注意。

// Input modules. This is edited by the configure script.
#define AR_INPUT_DUMMY
#undef  AR_INPUT_IMAGE
#undef  AR_INPUT_WINDOWS_DIRECTSHOW
#if !defined(_WIN64) || _MSC_VER >= 1800 // DSVideoLib 64-bit only on release for Visual Studio 2013 and later.
//#undef  AR_INPUT_WINDOWS_DSVIDEOLIB
#endif
#ifndef _WIN64 // QuickTime is not available for 64-bit.
//#undef  AR_INPUT_QUICKTIME
#endif
#undef  AR_INPUT_WINDOWS_DRAGONFLY
#undef  AR_INPUT_WINDOWS_MEDIA_FOUNDATION
#undef  AR_INPUT_WINDOWS_MEDIA_CAPTURE

// Default input module. This is edited by the configure script.
#undef  AR_DEFAULT_INPUT_DUMMY
#undef  AR_DEFAULT_INPUT_IMAGE
#undef  AR_DEFAULT_INPUT_WINDOWS_DIRECTSHOW
#if !defined(_WIN64) || _MSC_VER >= 1800 // DSVideoLib 64-bit only on release for Visual Studio 2013 and later.
//#undef  AR_DEFAULT_INPUT_WINDOWS_DSVIDEOLIB
#endif
#ifndef _WIN64 // QuickTime is not available for 64-bit.
//#undef  AR_DEFAULT_INPUT_QUICKTIME
#endif
#undef  AR_DEFAULT_INPUT_WINDOWS_DRAGONFLY
#undef  AR_DEFAULT_INPUT_WINDOWS_MEDIA_FOUNDATION
#undef  AR_DEFAULT_INPUT_WINDOWS_MEDIA_CAPTURE

DLLが見つからないエラーが発生する時の対処

実行時にDLLが有るのに見つからないエラーが出るときは、VisualStudioを再起動すると良い。原因は判らない。

カメラキャプチャの代わりに静止画を使う。

Webカメラ以外の画像入力を使う時は、vconf変数にテキストパラメータを書き込む。
例えばsimpleliteの場合は540行目。

以下のようにすると試験用のダミー画像がWebカメラの代わりに使われる。

char vconf[] = "-device=Dummy -format=BGRA -width=640 -height=480";

静止画を使う場合は以下のようにする。カメラが無い時にとりあえず静止画で実験するときはこれで。

char vconf[] = "-device=Image -image=D:\\ARToolKit5\\bin\\DataNFT\\test.jpeg -loop -width=640 -height=480";

変数の詳細はARVideoプロジェクト以下のソースに書いてある。

NFTをとりあえず動かす

  1. 要らないキャプチャドライバを無効化する。
  2. simpleNFTのプロジェクトを開く。
  3. コンパイルしてWebカメラで↓の画像を撮影する。

f:id:nyatla:20030117205529j:plain


Webカメラが無い時は、適当なカメラでNFTの画像↑を撮影して、640x480サイズのJpegにして静止画入力を使う。