【问题标题】:Grab Video Stream from FireWire从 FireWire 抓取视频流
【发布时间】:2011-10-22 12:16:24
【问题描述】:

我正在尝试通过 FireWire 将摄像机 (Sony HVR-Z1E) 中的视频流式传输到我的计算机。传入的图片/流应由一些需要 CVMat 格式(来自 openCV)的函数进一步处理。 好吧,我的问题是现在我不知道如何获取流。好的 openCV 2.1 为我提供了一些方法( cvCapturefromCam ),但无论我给他哪个参数,它总是从笔记本电脑的网络摄像头而不是从火线获取流。我听说我需要在 DirectShow API 中切换主凸轮(使用 Windows SDK)。但我实际上也不知道该怎么做。 那么有什么建议吗?

【问题讨论】:

标签: c++ opencv directshow firewire


【解决方案1】:

查看我的相关答案here。 OpenCV 无法从 Firewire 摄像机本地捕获视频。您将需要使用 CMU1394 驱动程序或 Sony 驱动程序(如果有可用的 SDK)从该相机捕获视频,然后将其传递给 OpenCV。

【讨论】:

    【解决方案2】:

    几年前,我使用 DirectShow 制作了类似的东西。主要限制是事实,通过 DShow 获取的图像是标准 PAL 分辨率。高清图像抓取是不可能的(它是索尼的第一款亲消费高清摄像机之一,现在不记得确切的型号了)。好消息是——这个方法除了 DirectShow 不需要任何东西——不需要额外的驱动程序等等。而且速度非常快。

    一般来说,方法是这样的:

    • 构建媒体渲染图(当然,你必须在那个阶段枚举视频设备)
    • 将继承自 ISampleGrabberCB 的自定义类插入其中。

    它是如何工作的:

    • 它使用了来自 ISampleGrabberCB 的 BufferCB() 虚拟方法 - 您必须在继承的类中编写该方法。
    • 在提到的方法中,您必须将数据留在全局结构中,并从主线程 - 照顾好它们。

    我知道,这描述有点模糊,但我希望你能找到你的信息(谷歌搜索“ISampleGrabberCB”应该是一个很好的起点,应该有很多示例代码)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-18
      • 2018-04-22
      • 1970-01-01
      • 2014-01-28
      • 2019-03-07
      • 1970-01-01
      • 1970-01-01
      • 2019-11-17
      相关资源
      最近更新 更多