2011-10-22 39 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”应该是一个很好的起点,应该有很多示例代码)。