2012-02-28 3 views
1

私たちはDirectShowインターフェイスを使用してビデオストリームから画像をキャプチャしています。これらの画像は固定サイズのウィンドウで表示されます。directshowはどこから画像の寸法を取得しますか?

イメージを取得したら、それをビットマップとして保存します。ダウンストリームでは、固定長フォントの文字など、画像に注釈を追加する機能があります。

私たちのデスクトップ環境の1つでは、注釈は、通常は表示されるサイズの半分で表示され始めました。これは、テキストをマージしているイメージが2倍の大きさを持つことを意味します。

このような状況が発生するシステムは、未知の個人のシステムにベースラインとは異なるソフトウェアがインストールされているような共有リソースです。

私たちには2つのアプローチがあります.1つ目は、デフォルトのテキストサイズの動作を元に戻すためにシステムを再イメージすることです。第2は、画像上のスケーリングを正しく設定できるように、画像寸法をどのように管理するかを理解することです。

DirectShowの文献を調べると、上記のことは簡単なことではないことがわかります。元の仕事は、彼らが何をしたのかを文書化していない別のチームによって行われました。サンプリングされた画像のサイズを適切に調整するために、どのDirectShowオブジェクトを処理したいのかを誰かが指摘できますか?

答えて

2

DirectShow - フレームワークとして - 解像度を直接処理しません。ビデオソース(キャプチャハードウェアなど)は、おそらく変更可能な特定の解像度でビデオフィードを提供することができます。キャプチャの解像度を選択するには、通常、IAMStreamConfigConfigure the Video Output Formatに記載されているように使用します。

キャプチャの解像度に影響を与えることはできず、キャプチャしたディメンションでイメージを再サンプリングする必要があることがあります。このためのストックフィルタはありませんが、Media Foundationは、ほとんどの作業を行う適切なVideo Resizer DSPを提供しています。残念ながら、DirectShowパイプラインにスムーズには適合しません。したがって、リサイズ用のフィッティングやカスタムフィルタが必要です。

2

DirectShowでフィルタを接続する場合は、AM_MEDIA_TYPEです。ここにBITMAPINFOHEADERVIDEOINFOHEADERがあり、このヘッダーにはbiWidthとbiHeightがあります。 FilterGraphを(GraphEditまたはを使用して)手動で構築し、これらのフィールドを調べてみてください。

+0

ビットマップ情報ヘッダーは、問題が発生しているイメージの解像度が、正常に動作するシステムのイメージの約半分であることを示しています。なぜ今の理由を理解する... –

関連する問題