2010-10-01 39 views
5

我有一個Microsoft LifeCam HD-5000網絡攝像頭。根據AMCap的說法,相機在720p下輸出30fps的MJPEG流。我想在一個小型應用程序中捕捉每個JPEG幀,而無需進行任何預覽或解壓縮/轉碼,以儘可能降低CPU利用率。C#Microsoft LifeCam HD mjpeg capture

我是C#開發人員,但我是DirectShow的新手。有沒有一種簡單的方法來捕捉MJPEG流的框架作爲其在C#/。NET相機的輸出而不解壓縮?

回答

1

首先,您可能不需要使用DirectShow訪問您的相機。查看OpenCV項目,該項目具有.net綁定,可在opencvdotnet處獲得。

如果您想要使用DirectShow路由,那麼您需要.NET綁定,請登錄directshownet項目。我相信你最好的選擇是創建一個包含你的網絡攝像頭作爲源過濾器的過濾器圖形,以及一個樣本採集卡作爲你的目標過濾器。樣本採集器的文檔位於MSDN。這會讓你訪問原始數據。您也可以請求特定的數據格式,並使用DirectShow智能連接來使用正確的轉換過濾器填充過濾器圖形。

這就是說,我絕對推薦使用DirectShow的OpenCV。 DirectShow是非常普遍的用途,並且可能比您需要它做得更多。 OpenCV可用於快速訪問您的相機。也許看看這個stackoverflow問題Webcam Usage in C#瞭解更多信息和答案。

0

使用DirectShowNet,我無法訪問單個幀並將其顯示爲位圖任何位置。在每個項目中,我只看到轉換器,直接顯示屏幕或流媒體。如何捕獲流作爲單個位圖幀?

0

在Directshow.net下載包中,他們有示例代碼,裏面有一個項目DxSnap,它通過directshow.net連接到網絡攝像頭並捕獲流中的圖片。您可以查看它並將其用作起始位置。