2011-10-22 72 views
0

我試圖從流的相機(索尼HVR-Z,E)在火線視頻到我的電腦。輸入的圖片/數據流應該由一些期望CVMat格式的函數進一步處理(來自openCV)。 那麼我的問題是,現在我不知道如何抓住流。好了OpenCV的2.1我提供了一些方法(cvCapturefromCam),但不管我給他哪一個參數,它總是從筆記本電腦的攝像頭,而不是從火線獲取流。我聽說我需要在DirectShow API(使用Windows SDK)中切換主凸輪。但我其實也不知道該怎麼做。 那麼有什麼建議如何做到這一點?抓取視頻流從火線

+0

[無法使用OpenCV從FireWire cam捕獲圖像]的可能重複(http://stackoverflow.com/questions/7822032/unable-to-capture-image-from-firewire-cam-using-opencv) – wimh

回答

0

見我的答案相關here。 OpenCV無法從本地捕獲Firewire相機的視頻。你要麼需要使用CMU1394驅動程序或驅動程序索尼(如果SDK支持它)來捕獲來自攝像機的視頻,然後將它傳遞給OpenCV的。

0

幾年前,我做了這樣的事情使用DirectShow。主要限制是事實,通過DShow獲取的圖像是標準的PAL分辨率。高清圖像抓取是不可能的(它是索尼最早的專業消費級高清攝像機之一,現在不記得確切的模型)。好的一點是 - 這種方法除了沒有其他的驅動程序之外不需要任何其他的東西,等等。而且速度非常快。

一般來說,方法是這樣的:

  • 建築媒體渲染圖(當然,你必須枚舉舞臺視頻設備)
  • 插入從ISampleGrabberCB繼承了它的自定義類。

如何,它的工作:

  • 它使用BufferCB()從ISampleGrabberCB虛方法 - 你必須在你的繼承類來寫。
  • 中提到的方法,你必須在全球結構留下的數據,並從主線程 - 照顧他們。

我知道,這有點模糊的描述,但我希望你會發現你的信息(搜索「ISampleGrabberCB」應該是一個很好的起點,應該有很多示例代碼)。