我正致力于实时制作高动态范围视频的项目。目标是使用3个现成的网络摄像头(Microsoft LiveCam Studio)来实现。我开始尝试使用OpenCV,但是我在打开相机时遇到了困难。所以我直接跳到videoInput
。我可以让任何两个相机互相合作。我可以让任何两个网络摄像头与笔记本电脑上的内置网络摄像头配合使用。但如果我尝试将所有三个网络摄像头一起运行,我就会
错误:无法启动图表
花了几个小时调查videoInput.cpp
我无法弄清楚为什么两台相同类型的相机没问题,但是当我添加第三台相机时失败。
当我到达这个意想不到的墙壁时,我以为我差不多完成了我的项目。
你对此有什么想法吗?
Windows 7(64)
Visual Studio 2011
我需要以同步的方式从所有3个相机中获取一个帧。我对如何完成这项工作的任何建议持开放态度。有没有其他框架可以让我避免使用DirectShow或MediaFoundation?有没有人有我可以看到的代码,它会打开多个摄像头并从流中拉出帧?
答案 0 :(得分:3)
摄像机可能只通过directshow连接(至少在Windows上),我不知道微软提供的任何低级API直接与摄像机通信。
您是否可以使用常规网络摄像头查看器同时运行3台摄像机?
它可能是directshow的限制或USB的带宽 - 尝试将它们连接到不同的端口。
即便如此,你也无法使用directshow准确地同步相机,时间将达到帧间隔(1 / 10s?)。
答案 1 :(得分:1)
典型的问题是USB带宽不足以同时运行两台摄像机,两台摄像机都可以独立完成,但是一旦你同时尝试它们 - 你就会失败。另一个不太常见的原因是相机驱动程序。也许您可以在低分辨率模式下尝试 - 如果此尝试成功,则带宽不足的版本最有可能。
有时您可以通过将相机连接到不同的USB主机/控制器(而不是同一主机上的端口!)来解决问题。 API本身并不限制您一次只使用一台摄像机。