0

カメラ(Sony HVR-Z1E)からFireWire経由でコンピューターにビデオをストリーミングしようとしています。着信画像/ストリームは、CVMat形式(openCVから)を期待するいくつかの関数によってさらに処理されるものとします。さて、私の問題は、ストリームを取得する方法がわからないことです。さて、openCV 2.1はいくつかのメソッド(cvCapturefromCam)を提供しますが、どのパラメーターを指定しても、Firewireからではなく、常にラップトップのWebカメラからストリームを取得します。DirectShow API(Windows SDKを使用)でプライマリカムを切り替える必要があると聞きました。しかし、私は実際にそれを行う方法も知りません。それで、これを行う方法の提案はありますか?

4

2 に答える 2

0

数年前、私はDirectShowを使用してこのようなものを作成しました。主な制限は、DShowを介して取得された画像が標準のPAL解像度であったという事実でした。HD画像の取得はできませんでした(これはソニーの最初のプロ消費者向けHDカムコーダーの1つであり、正確なモデルを今は覚えていません)。良い点は、このメソッドは、裸のDirectShow以外は何も必要としなかったということでした。追加のドライバーなどは必要ありませんでした。そして、それは非常に速かった。

一般的に、メソッドは次のようなものでした。

  • メディアレンダリンググラフの作成(もちろん、その段階でビデオデバイスを列挙する必要があります)
  • ISampleGrabberCBから継承したカスタムクラスを挿入します。

仕組み:

  • ISampleGrabberCBのBufferCB()仮想メソッドを使用しました。これは継承されたクラスに書き込む必要があります。
  • 前述の方法では、データをグローバル構造体に残して、メインスレッドからデータを処理する必要があります。

少しあいまいな説明ですが、あなたの情報が見つかることを願っています(「ISampleGrabberCB」のグーグルは良い出発点であり、多くのサンプルコードがあるはずです)。

于 2011-10-23T11:05:55.953 に答える
0

ここで私の関連する答えを参照してください。OpenCVは、Firewireカメラからネイティブにビデオをキャプチャすることはできません。そのカメラからビデオをキャプチャするには、CMU1394ドライバーまたはSonyドライバー(SDKが利用可能な場合)を使用して、OpenCVに渡す必要があります。

于 2011-10-22T16:46:54.777 に答える