我在最近的一次实验中尝试使用opencv同时调用 4 个usb摄像头(usb3.0)进行拍照,但却一直报 Invalid argument 的错误,表明有摄像头没有输入。当我把摄像头的数目减少为 3 个时就没有出现任何问题。经查阅资料得知是电脑的usb带宽有限,不足以同时支撑多个摄像头。
目前已知可行的方法如下:
1. 不要同时生成多个 VideoCapture 实例。你可以只保留一个,然后每拍完一张照就切换为下一个摄像头,轮流拍照。或者让其中比较重要的几个留着,其余的摄像头轮流拍。
2. 通过硬件拓展 usb 带宽。usb-hub 似乎是不行的,要用 pci拓展。我在 macbook 上使用雷电拓展坞也解决了这个问题。