cv :: videocapture无法打开可用的USB摄像头

我试图连接到连接到不同的USB总线的USB摄像头(希望取消由USB引起的带宽瓶颈)。 在访问摄像机之前,我正在用V4L2 API直接探测它们,看看它们是否可以访问。 现在,有3台摄像机,V4L2可以看到它们。 然后我试图使用openCV来访问它们,每个都在它自己的对象中:

this->camera = new cv::VideoCapture(camera_port); if(this->camera->isOpened()) { .... cv::Mat capturedImage; bool read; read = this->camera->read(capturedImage); .... } 

其中camera_port是0,1,2。 显然this->camera是在程序closures时用release()来调用的。

当我访问多个摄像头时出现问题。 三个摄像机中只有一个摄像机返回图像。 其他人返回我在控制台上看到的错误(每次运行都不一样):

  • libv4l2:打开stream的错误:连接超时,VIDIOC_STREAMON:连接超时
  • libv4l2:打开stream的错误:input/输出错误,VIDIOC_STREAMON:input/输出错误
  • libv4l2:打开stream的错误:无效的参数,VIDIOC_STREAMON:无效的参数
  • 其他一些错误,但以上是最常见的

然而,在重新插入USB摄像头之后,这在第一次运行时起作用,而不是在程序的进一步运行中。 思考?