【问题标题】:Using emguCV (OpenCV) to capture video in 2 different program from the firewire camera?使用 emguCV (OpenCV) 从火线相机捕获 2 个不同程序中的视频?
【发布时间】:2013-01-17 04:11:01
【问题描述】:

我正在寻找一种方法来使用 OpenCV(或者特别是 C# 中的 emguCV)在 2 个不同的程序上同时从同一火线上捕获视频。这里的一些帖子说它无法完成,因为源驱动程序一次会被锁定到一个应用程序中。

我在这里发现了一些answers 建议使用SplitCam,但它似乎只适用于网络摄像头。我也不喜欢 SplitCam 上的广告(但我不能抱怨,因为它是免费软件)。

SplitCam 似乎正在使用源信号并创建一个虚拟驱动程序供其他程序使用。有没有办法像使用 OpenCV 的 SplitCam 一样做同样的事情? OpenCV 可以访问火线摄像头,我在 emguCV 中使用它并运行单个程序没有问题。

【问题讨论】:

    标签: c# emgucv firewire


    【解决方案1】:

    搜索了一段时间,找到了2种不同的解决方案。

    1) 实现 DirectShow 虚拟视频捕获源过滤器。这个项目已经在CodeProject 上得到了很好的记录。由于我对 DirectShow 了解不多,因此这种方法需要一些学习曲线。

    2) 使用第 3 方组件。我从e2esoft 找到了一个与SplitCam 类似的软件,但它是一个可以在您自己的项目中使用的SDK。他们已经有一个 CSharp 示例。我在使用本示例提供的 COM 对象时确实遇到了一点问题(错误 80040154),因为它是一个 32 位 COM 对象,但我运行的是 64 位 Windows 7。我找到了解决 here 使用注册表黑客。

    我最终选择了解决方案 #2,因为它易于快速实施。我使用该组件创建了一个虚拟设备,该设备从主火线摄像头设备中获取视频。之后,我使用 emguCV 抓取帧的程序可以从虚拟设备中抓取。虚拟设备可以被多个来源使用,到目前为止,我有 3 个我的程序实例从虚拟设备中获取,并且我没有看到帧速率有任何延迟(假设这个火线相机最多只能运行 15FPS)。这个解决方案的缺点是我必须支付许可证才能去除视频上的水印。当我发现它是多少时,我会更新它,因为他们没有在网站上发布 SDK 的价格。如果真的很贵的话,我就得去第一个解决方案,学习实现 DirectShow 过滤器。

    2013 年 1 月 16 日编辑:VCam SDK 的价格为 699 美元。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 2019-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多