1

OpenCV (または具体的には C# の emguCV) を使用して、2 つの異なるプログラムで同じファイヤーワイヤーから同時にビデオをキャプチャする方法を探しています。ソース ドライバが一度に 1 つのアプリケーションにロックされるため、実行できないとの投稿がいくつかありました。

ここでSplitCamの使用を示唆するいくつかの回答を見つけましたが、Webcam でのみ機能するようです。また、SplitCam の広告も好きではありません (ただし、フリーウェアなので文句は言えません)。

SplitCam はソース信号を使用しているようで、他のプログラムが使用する仮想ドライバーを作成します。OpenCVを使用してSplitCamと同じことを行う方法はありますか? OpenCVはfirewireカメラにアクセスでき、単一のプログラムを実行しているemguCVで使用しても問題ありません。

4

1 に答える 1

0

しばらく検索した後、2つの異なる解決策が見つかりました。

1) DirectShow Virtual Video Capture Source Filter を実装します。このプロジェクトはCodeProjectで非常によく文書化されています。私は DirectShow についてよく知らないので、この方法は少し習得に時間がかかります。

2) サードパーティ コンポーネントを使用します。SplitCam のように機能するe2esoftのものを見つけましたが、これは独自のプロジェクトで使用できる SDK です。彼らはすでに CSharp の例を持っています。この例で提供されている COM オブジェクトは 32 ビットの COM オブジェクトですが、64 ビットの Windows 7 を実行しているため、これを使用すると少し問題 (エラー 80040154) が発生しました。レジストリ ハックを使用して回避策を見つけました。 .

すぐに実装するのが簡単なので、ソリューション#2を使用することになりました。このコンポーネントを使用して、メインの firewire カメラ デバイスからビデオを取得する仮想デバイスを作成します。その後、emguCV を使用してフレームを取得するプログラムは、仮想デバイスから取得できます。仮想デバイスは複数のソースで使用できます。これまでのところ、仮想デバイスから取得するプログラムの 3 つのインスタンスがあり、フレーム レートに遅延は見られません (この FireWire カメラが最大 15FPS しか実行されていないことを認めます)。このソリューションの欠点は、ビデオの透かしを取り除くためにライセンス料を支払わなければならないことです。ウェブサイトにSDKの価格を掲載していないので、金額がわかったら更新します. それが本当に高価なら、私は'

2013 年 1 月 16 日編集: VCam SDK の価格は $699 です。

ここに画像の説明を入力

于 2013-01-16T19:19:42.263 に答える