2010-01-08 52 views
0

我正在編寫一個程序,它將實時轉換網絡攝像頭的圖像。和其他所有網絡攝像機一樣,我的noname以YUY2格式提供數據(用bmiHeader.biCompression編寫)。我根據http://www.fourcc.org/yuv.php#YUY2在CPU端嘗試了直接轉換,但它非常慢並且錯誤:)。從YUY2到RGB24的快速轉換

當我將源輸出引腳連接到渲染器時,圖片和幀率都很好。

所以我正在尋找一個DirectShow過濾器,或者,也許,一些編解碼器,將在視頻卡上從YUY2快速轉換爲RGB24,並會給我結果,而不會在屏幕上呈現它。

我使用:

  • 32位的Windows XP SP3。
  • VC++ 2005
  • 最近下載的Windows SDK。
  • DirectX August'09。

回答

2

我目前還沒有可用的代碼。但看看使用GDI以非常快的速度完成轉換。

基本上捕獲源幀,以正確的格式(rgb24)創建一個內存二進制位,並向位圖傳輸。轉換髮生在blitting期間,而且我的經驗非常快。

我用它從網絡攝像機抓取幀,然後我可以以所需的幀速率將幀丟棄到硬盤驅動器,如jpegs或bitmaps。

DC

+0

標誌着我答案接受,不是因爲它幫助了我。但我找到了解決方案。我只是將我的ISampleGrabber的AM_MEDIA_TYPE設置爲rgb24,如MSDN中所寫。 – peterdemin 2010-01-08 20:44:37