ARToolKitのTwoViewを触ってみる
やっと2つめのカメラを購入したので、さっそくTwoViewを触ってみました。
遅くなってしまったので、コメントを頂いた方はもう解決したかもしれませんが、一応書いておきます。
基本的には、工学ナビ様のBBSで説明されている手順通りです。
詳しく書いてみます。
ちなみに僕の環境は以下の通りです。
OS : Microsoft Windows XP Home Edition (SP2)
CPU : AMD Athlon^(TM) 64 X2 プロセッサ 3800+
メモリ : DDR SDRAM 1GB
Webカメラ:Qcam Pro for Notebooks ×2
1.GraphEditの入手
GraphEditは、DirectX SDKの中に入っています。
ひとまず、"C:\Program Files\"内で、GraphEditとか、graphedtで検索してみてください。
見つからない場合は、DirectX SDKをインストールしてください。
2.Webカメラのデバイス名を取得
GraphEditを起動したら、メニューから[Graph]->[Insert Filters...]を選択、ダイアログを開きます。
ダイアログのツリーから[Video Capture Source]を開き、その中の各Webカメラ名を選択します。
僕の場合は、[Qcam Pro for Notebooks]が2つあります。
各Webカメラ名を選択したときに、一番下のエディットボックスに表示される長い文字列が、そのWebカメラのデバイス名になります。僕の場合は、
この文字列は、もちらんそのカメラ固有のもので、僕のカメラのものを他の人が使っても上手くいきません。
3.ARToolKitの設定ファイルを書き換える
Dataフォルダの"WDM_camera_flipV.xml"というファイルを、適当なエディタで開きます。
その中で、
という行があるはずです。これに"device_name"追加して、以下のようにします。
ここで、先ほど取得したカメラのデバイス名を、device_nameの""内にコピーします。
次に、コピーした文字列で"&"になっている部分を"&"に置き換えます。
この変更したファイルを、別名で保存します。
ここでは、"WDM_camera_flipV_01.xml"とします。
もう1つのデバイス名についても同じ作業をして、名前を変えて保存します。
こっちは、"WDM_camera_flipV_02.xml"としました。
4.プログラムを書き換える
プロジェクトを開いて、twoView.cを変更します。
"WDM_camera_flipV.xml"のところを、新しく作ったファイルに置き換えます。
を
以上で終わりです。
僕の場合は、これでうまくいきました。
これでも失敗する場合は、残念ながら僕には分かりません。
twoViewについては、他にも解説しているサイトがあるので、そちらを参照してください。
Webカメラの種類も関係あるみたいです。
※追記
○08/05/09
一方のカメラのフレームレートだけ、やけに遅い問題が発生していましたが、
"videoWin32DirectShow.cpp"ファイルの
○08/05/10
一方のカメラの画面が上下反転していた問題がありました。
調べてみると、"WDM_camera_flipV_02.xml"ファイルだけ、
このファイルを作るのに、"WDM_camera.xml"を利用したのが間違いだったみたいです。
遅くなってしまったので、コメントを頂いた方はもう解決したかもしれませんが、一応書いておきます。
基本的には、工学ナビ様のBBSで説明されている手順通りです。
詳しく書いてみます。
ちなみに僕の環境は以下の通りです。
OS : Microsoft Windows XP Home Edition (SP2)
CPU : AMD Athlon^(TM) 64 X2 プロセッサ 3800+
メモリ : DDR SDRAM 1GB
Webカメラ:Qcam Pro for Notebooks ×2
1.GraphEditの入手
GraphEditは、DirectX SDKの中に入っています。
ひとまず、"C:\Program Files\"内で、GraphEditとか、graphedtで検索してみてください。
見つからない場合は、DirectX SDKをインストールしてください。
2.Webカメラのデバイス名を取得
GraphEditを起動したら、メニューから[Graph]->[Insert Filters...]を選択、ダイアログを開きます。
ダイアログのツリーから[Video Capture Source]を開き、その中の各Webカメラ名を選択します。
僕の場合は、[Qcam Pro for Notebooks]が2つあります。
各Webカメラ名を選択したときに、一番下のエディットボックスに表示される長い文字列が、そのWebカメラのデバイス名になります。僕の場合は、
@device:pnp:\\?\usb#vid_046d&pid_0991&mi_00という文字列でした。
#6&22a7aaac&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\
{bbefb6c7-2fc4-4139-bb8b-a58bba724083}
@device:pnp:\\?\usb#vid_046d&pid_0991&mi_00
#6&a9d31db&1&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\
{bbefb6c7-2fc4-4139-bb8b-a58bba724083}
この文字列は、もちらんそのカメラ固有のもので、僕のカメラのものを他の人が使っても上手くいきません。
3.ARToolKitの設定ファイルを書き換える
Dataフォルダの"WDM_camera_flipV.xml"というファイルを、適当なエディタで開きます。
その中で、
<camera show_format_dialog="true" friendly_name="PGR">
という行があるはずです。これに"device_name"追加して、以下のようにします。
<camera show_format_dialog="true" friendly_name="PGR" device_name="">
ここで、先ほど取得したカメラのデバイス名を、device_nameの""内にコピーします。
<camera show_format_dialog="true" friendly_name="PGR" device_name="@device:pnp:\\?\usb#vid_046d&pid_0991&mi_00#
6&22a7aaac&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\
{bbefb6c7-2fc4-4139-bb8b-a58bba724083}">
次に、コピーした文字列で"&"になっている部分を"&"に置き換えます。
<camera show_format_dialog="true" friendly_name="PGR" device_name="@device:pnp:\\?\usb#vid_046d&pid_0991&mi_00#
6&22a7aaac&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\
{bbefb6c7-2fc4-4139-bb8b-a58bba724083}">
この変更したファイルを、別名で保存します。
ここでは、"WDM_camera_flipV_01.xml"とします。
もう1つのデバイス名についても同じ作業をして、名前を変えて保存します。
こっちは、"WDM_camera_flipV_02.xml"としました。
4.プログラムを書き換える
プロジェクトを開いて、twoView.cを変更します。
"WDM_camera_flipV.xml"のところを、新しく作ったファイルに置き換えます。
#if defined(_WIN32)
"Data\\WDM_camera_flipV.xml",
"Data\\WDM_camera_flipV.xml",
#elif defined(__APPLE__)
を
#if defined(_WIN32)に変更しました。
"Data\\WDM_camera_flipV_01.xml",
"Data\\WDM_camera_flipV_02.xml",
#elif defined(__APPLE__)
以上で終わりです。
僕の場合は、これでうまくいきました。
これでも失敗する場合は、残念ながら僕には分かりません。
twoViewについては、他にも解説しているサイトがあるので、そちらを参照してください。
Webカメラの種類も関係あるみたいです。
※追記
○08/05/09
一方のカメラのフレームレートだけ、やけに遅い問題が発生していましたが、
"videoWin32DirectShow.cpp"ファイルの
const long frame_timeout_ms = 0L;というのを
const long frame_timeout_ms = 100L;ぐらいにしたら、直りました。数値は適当です。
○08/05/10
一方のカメラの画面が上下反転していた問題がありました。
調べてみると、"WDM_camera_flipV_02.xml"ファイルだけ、
<RGB32 flip_h="false" flip_v="true"/>が
<RGB32/>となっていたのが原因でした。
このファイルを作るのに、"WDM_camera.xml"を利用したのが間違いだったみたいです。
