一个USB2.0集线器上的两个networking摄像头 – 在Windows而不是Linux下工作

下面的openCV代码可以从两台摄像机获取同步图像。 它在Windows中工作正常,相机都连接到一个USB 2.0集线器。 当我在linux上尝试相同的代码时,一次只有一个摄像头的带宽足够大。 我也试着用guvcview同时查看这两个stream。 我需要的是一些强制摄像头一起工作的方式,可能是通过设置驱动程序请求的带宽量。

capture = cv.CaptureFromCAM(0) capture2 = cv.CaptureFromCAM(1) while True: frame = cv.QueryFrame(capture) frame2 = cv.QueryFrame(capture2) cv.ShowImage("w1", frame) cv.ShowImage("w2", frame2) if cv.WaitKey(10) != -1: break 

Solutions Collecting From Web of "一个USB2.0集线器上的两个networking摄像头 – 在Windows而不是Linux下工作"

问题可能出在这里,摄像机在Windows驱动程序中运行某种视频压缩,而在Linux中则可能以非压缩的方式运行 – 数据速率更高。

如果是这样的话,那么你可能需要把它们放在不同的USB 总线上,以使它们在Linux中同时工作。 这可能要求您将PCI或PCIe USB卡添加到您的系统 – 许多主板只能实现一个USB2.0高速总线。

你可以配置摄像头使用较低的分辨率或帧速率,从而减少带宽?

我也有网络摄像头(LifeCam Cinema)的USB带宽问题,并通过使用uvcvideo驱动程序的FIX_BANDWIDTH 怪癖来解决它。 看到这个答案有关使用怪癖的细节。

没有怪癖,对于我试过的一些USB主机控制器,两个LifeCams工作(每个控制器); 对于其他人,只有一个。 这里是我的机器视觉机器中的控制器:

 uli@KL04:~$ lspci | grep USB 00:1a.0 USB controller: Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #2 (rev 06) 00:1d.0 USB controller: Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #1 (rev 06) 03:00.0 USB controller: VIA Technologies, Inc. Device 3483 (rev 01) 0a:00.0 USB controller: ASMedia Technology Inc. Device 1142 0b:00.0 USB controller: ASMedia Technology Inc. Device 1142 

(Intel和ASMedia控制器位于主板上,VIA位于PCIe卡上。)毫不奇怪,每个ASMedia控制器只支持一个LifeCam。