0

目前正在尝试使用连接到安装了 Ubuntu 18.04 的 Raspberry Pi 4(通过板载 USB 端口和 USB 集线器)的 10 个 USB 摄像头同时捕获 10 个图像。我正在使用多线程方法来创建多个将捕获照片的相机对象。我目前有 4 个摄像头工作(这上升到 /dev/video7,每个物理摄像头占用 2 个设备索引。

我目前遇到的问题是访问任何大于 7 索引的相机设备(将无法访问 5 或更高的物理相机)。我目前收到以下错误:

“视频错误:V4L:索引 8 不正确!”

它与位于 modules/videoio/src/cap_v4l.cpp 的 opencv_3.4.1 源文件相关联。在这个源文件中,它提到它已针对多达 8 个输入进行了测试,是否有人设法获得超过 8 个输入设备来使用 Raspberry Pi 拍摄照片?

我还将添加一些我已经尝试过的调试信息。

  • 将 #define MAX_CAMERAS 8(位于 cap_v4l.cpp 中)更改为更大的值并重建了 opencv 模块,但没有任何影响。
  • 我也尝试过自己访问设备索引大于 7 的任何相机,但它仍然存在。
  • 我设法使用 ROS melodic 上的 usb_cam 访问这些摄像头,因此它们可以正常工作和连接。如果可能的话,我更愿意通过 opencv-python 来完成这项工作,但如果没有解决方案,我将探索一种 ROS 方法来解决该任务。

任何帮助或建议表示赞赏,谢谢。

4

1 回答 1

0

经过无休止的调试后,我找到了一种解决方法,该方法允许我使用索引高于 7 的相机捕获图像。在下面的第一行代码上创建 VideoCapture() 对象后,这会导致 VIDEOIO ERROR 仍然发生。在此之后,我检查相机是否正确打开,如果没有,我会再次打开相机然后继续工作。

    self.cam = cv2.VideoCapture(camID)
    if(self.cam.isOpened() is False):
        self.cam.open("/dev/video" + str(camID))
于 2021-01-30T01:55:04.230 回答