2011-05-04 15 views
4

我正在致力于实时生成高动态范围视频的项目。目标是用3个现成的网络摄像头(Microsoft LiveCam Studio)来完成它。我开始尝试使用OpenCV,但是我无法打开相机。所以我直接跳到videoInput。我可以让任何两台相机相互配合工作。我可以让任何两个网络摄像头与我的笔记本电脑上的内置摄像头一起使用。但是,如果我尝试所有的三个摄像头一起跑,我得到3摄像头捕捉视频输入或其他任何东西

ERROR: Could not start graph'

花费几个小时调查videoInput.cpp我想不通为什么它会具有相同类型的两个相机没有问题后,但不能当我添加第三。

我以为当我到达这个意想不到的墙时,我几乎完成了我的项目。

你有什么想法吗?

的Windows 7(64)

的Visual Studio 2011

我需要得到所有3个摄像头帧的同步方式。对于如何完成此任务的任何建议,我都非常欢迎。有没有其他框架可以让我避免DirectShow或MediaFoundation?有没有人有我可以看到的代码,将打开多个摄像头,并从流中拉框架?

+0

你可以尝试将相机插入不同USB集线器的端口吗? – 2011-05-04 20:58:32

回答

3

很可能摄像头只能通过directshow(至少在windows上)连接,我不知道微软提供的任何低级API直接与摄像头通信。

您是否可以使用常规摄像头查看器同时运行3个摄像头?

它可能是directshow或USB的带宽限制 - 尝试将它们连接到不同的端口。

即使你不能准确地使用directshow同步相机,定时将高达一个帧间隔(1/10s?)。

1

典型的问题是,USB带宽不足以使两台摄像机在同一时间运行,两台摄像机都独立运行良好,但是一旦你尝试了它们,你就会失败。另一个不太常见的原因是相机驱动程序。也许你可以在低分辨率模式下尝试 - 如果尝试成功,那么带宽不足的版本是最有可能的一个。

有时你可以通过将摄像机连接到不同的USB主机/控制器(而不是同一主机上的端口!)来解决问题。 API本身并不限制您一次只能使用一台摄像机。

+0

我已经看到微软Lifecam摄像头在USB集线器上声称所有可用带宽。您可能需要将额外的USB控制器卡添加到计算机才能成功。 – SteveS 2014-01-24 17:09:50