http://vision.kuee.kyoto-u.ac.jp/%7Ehiroaki/firewire/directshow.html
上記のサイトのtwo_camerasというソースを実行したのですがうまくいきません。
実行するとそれぞれのカメラから取得した画像が表示されるのですが、一方の画像が異様に小さく表示されてしまうのです。
ソースの作者の実行結果では同じ大きさの画像が2つ表示されているのでプログラム上の問題ではないと思うのですが・・・。
開発環境は WindowsXP DirectX SDK 9.0 です。
カメラはLogicoolのQcam Expressを2台使用しています。
不確かなことでもアドバイスをいただけたらうれしいです。
よろしくお願いします。
・そのカメラは複数台接続しても正常に動作する機種なのでしょうか?
可能なら、製造元に問い合わせて見てください。USBカメラとかでは、
1台しかつながらない機種が多いです。
・DirectShowのサンプル「AmCap サンプル」で2台同時に表示できますか?
・GraphEdit上でこのプログラムと同じことをやるとどうなります?
製造元には問い合わせてみました。
返答待ちです。
「AmCap サンプル」で2台同時に実行してみたところ、それぞれのカメラからの映像が表示されました。
しかし、後から起動したほうのカメラから取得した画像は無理やり拡大したような感じで、かなり粗い画像です。
おそらく、ウインドウサイズがあらかじめ決まっていてそれに合わせて画像を表示した結果だと思います。
GraphEditで見てみると、最初に起動したほうは352×288の画像で後で起動したほうは128×96の画像が取得されていました。
やはり、2台同時だと、問題ありそうですね。
そのカメラのフィルターをGraphEditに落とすと、PreViewピンが
出てきますか?
サンプルでPIN_CATEGORY_PREVIEWではなく、PIN_CATEGORY_CAPTURE
を使うとどうなります?
PreViewピンはCaptureピンとは仕様が違う(モニター用なので低機能)
ことがあります。
このカメラ、USB2.0に対応してます?
症状からして、ドライバー内部で映像用に使えるメモリー量が一定なのでは。
最初のカメラが領域を取り過ぎると、2台目が使える量が減ってしまい、
解像度が小さくなってしまう、という感じです。
このメモリ量が固定なのか、帯域から自動計算しているのかは不明ですが。
カメラのフィルターをGraphEditに落とすと、PreViewピンではなくCaptureピンが出てきました。
PIN_CATEGORY_PREVIEWをPIN_CATEGORY_CAPTUREに変更しても何ら変化はありませんでした。
現在使っているカメラがUSB2.0に対応しているかどうかについてですが、もともとカメラが入っていた箱には対応しているというふうなことは書かれていなかったので対応していない可能性が高いです。
はっきり確認できたわけではないので、おそらくとしか言えませんが・・・。
カメラをIEEE1394のものに変更したら上手くいきました。
ボコノン教徒さん親切に対応してくださってありがとうございました。
ツイート | ![]() |