2009-08-25 5 views
0

現在、私は、新しいGUI、本質的にdirectX(より正確には、direct3D)を使用するソフトウェアを作成し、Axis IPカメラからのストリーミングイメージを表示する。Direct3DとAxisを組み合わせて複数のIPカメラGUIを作成する

当分の間、プログラム全体の流れは次のようになりました。 1.ストリーミングイメージを取得するAxisプログラムを取得します。 2.イメージをDirect3Dプログラムに渡します。 3.プログラムを画面に表示します。

現在、私は、(テスト用の)aviビデオからビデオフレームをロードして表示する多少基本的なDirect3Dアプリケーションを作成しました。私はDirectXを使ってビデオから直接画像をロードする方法を知らないので、OpenCVを使ってビデオからフレームを保存し、DXにそれらをアップロードさせてください。非常に遅い。

今、私はいくつかの不明確なものがあります:軸のIPカメラから直接画像をアップロードする方法 C++で動作軸プログラムを入手する方法1.(つもり、後でprolly大したを例を見ない) 2.プログラム。

皆さん、私のプログラムをより効率的に動作させるための推奨や提案はありますか?何か私に知らせてください。

答えて

0

ダイレクトショーを使用し、遠端でカスタムレンダラーを追加すると、直接、伸長されたビデオデータを直接Direct3Dテクスチャにコピーする方が早いかもしれません。

そのテクスチャをダブルバッファリングする価値があります。テクスチャ0を表示し、テクスチャ1もアップロードしてから、新しいフレームが利用可能なときに2をスワップします(テクスチャ0にアップロード中にテクスチャ1を表示する)。

この方法では、レンダリングフレームレートからビデオフレームレートを切り離すことができます。これにより、ドロップされたフレームを扱いやすくします。

+0

良いアイデア。私もDirectShowの使用を検討していますが、私はDirect3DとAxisプログラムだけを使用する方が好きです。私はDirectShowについても学びます。 – Sodrohu

0

Direct3Dテクスチャのインプレースアップデート(IDirect3DTexture9::LockRectを使用)を使用していますが、非常に高速です。あなたのプログラムのどの部分が遅いですか? http://sourceforge.net/projects/ipsi/

それは、(利用可能な場合)イメージとコントロールカメラのズームや回転を捕捉するために使用することができます:軸からのキャプチャ画像では

+0

私は分かりませんが、OpenCVがフレームを画像に保存し、D3Dが後で画像をアップロードしてレンダリングする部分だと思います。それでも、ハードウェアではなくソフトウェアレンダリングを使用しているため、おそらく遅いです。私はグラフィックスカードを持っていません。 – Sodrohu

0

を使用すると、IPSIのC++ライブラリを使用することがカム。

+0

実際には、Axisが提供するSDKを使用してイメージを抽出することをお勧めします。私はいくつかのドキュメントを読んで、VC++のサンプルを使って実行しました。もう少し作業すれば、それを実行できるはずです。私はまた、Axisカメラをダイアログウィンドウに表示するMFCプログラムを同僚から入手しました。それは私のプログラムthoと互換性があるように変換する必要があります。 しかし、とにかく感謝します。物事が自分の道を行くことがない場合は、常にあなたのバックアップがあります。 – Sodrohu

関連する問題