2012-02-28 118 views
1

我們使用directshow界面從視頻流中捕捉圖像。這些圖像以固定大小的窗口呈現。directshow從哪裏獲取圖像尺寸?

一旦我們捕獲了一個圖像,我們將它作爲一個位圖存儲。在下游,我們有能力爲圖像添加註釋,例如固定大小的字體。

在我們的桌面環境之一中,註釋開始出現在它通常出現的大小的一半處。這意味着我們將文本合併到的圖像的尺寸可能是兩倍。

發生這種情況的系統是共享資源,因爲某些未知個人在系統上安裝了與我們的基線不同的軟件。

我們有兩種方法 - 第一種是重新映像系統以恢復默認的文本大小行爲。第二個是弄清楚directshow如何管理圖像尺寸,以便我們可以正確設置圖像的縮放比例。

對directshow文獻的調查表明,上述不是一項簡單的任務。原來的工作是由另一個團隊完成的,他們沒有記錄他們做了什麼。任何人都可以指向我們想要處理的directshow對象的方向,以正確確定採樣圖像的大小嗎?

回答

2

DirectShow - 作爲一個框架 - 不直接處理解決方案。您的視頻源(例如捕捉硬件)能夠以您可能更改的某種分辨率提供視頻饋送。您通常使用IAMStreamConfig,如Configure the Video Output Format中所述,以便選擇捕獲分辨率。

有時您不能影響捕捉分辨率,您需要對捕捉到的任何尺寸的圖像進行重新採樣。沒有股票篩選器,但媒體基金會提供合適的Video Resizer DSP,它執行大部分任務。不幸的是,它不能順利地適應DirectShow管道,因此您需要使用擬合和/或自定義過濾器來調整大小。

2

當過濾器在DirectShow中連接時,它們有一個AM_MEDIA_TYPE。在這裏你會發現一個VIDEOINFOHEADERBITMAPINFOHEADER和這個頭有一個biWidth和biHeight。 嘗試手動構建FilterGraph(使用GraphEdit或GraphStudioNext)並檢查這些字段。

+0

位圖信息標題指示圖像上我們遇到問題的分辨率大約是我們從系統正常工作的圖像的一半。現在弄清楚爲什麼... – 2012-02-29 18:00:07