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