首页 > 解决方案 > Win10 VS17 中的 OpenCV VideoCapture 无法打开超过四个 USB 3.0 摄像头

问题描述

我正在尝试使用 OpenCV 库中的 VideoCapture 函数在 VS17 win10 OpenCV 环境中设置多摄像头系统。相机为 Basler USB 3.0(3840*2748 单色)。我可以毫无问题地打开和流式传输多达四个摄像机。但是,无法打开第五个或更多相机。然而,使用 Basler 软件可以毫无问题地访问所有六台相机。我不确定是否存在硬件限制(如 USB 带宽或 PCI 总线),这不应该是因为在 Basler SDK 中,所有相机都可以正常使用。

我尝试设置较低分辨率的图像以查看它是否是 USB 带宽限制,但仍然无法正常工作。

诠释主要(){

    VideoCapture cap0(0), cap1(1), cap2(2), cap3(3), cap4(4), cap5(5);
Mat ca1, ca2, ca3, ca4, ca5, ca6;
cv::namedWindow("Camera1", WINDOW_NORMAL);
cv::namedWindow("Camera2", WINDOW_NORMAL);
cv::namedWindow("Camera3", WINDOW_NORMAL);
cv::namedWindow("Camera4", WINDOW_NORMAL);
cv::namedWindow("Camera5", WINDOW_NORMAL);
cv::namedWindow("Camera6", WINDOW_NORMAL);
while (true) {
    if (cap0.grab()) {
        cap0.retrieve(ca1);
    }
    if (!cap0.grab()) {
        std::cout << "camera 0 cannot be grabbed\n";
    }
    if (cap1.grab()) {
        cap1.retrieve(ca2);
    }
    if (!cap1.grab()) {
        std::cout << "camera 1 cannot be grabbed\n";
    }
    if (cap2.grab()) {
        cap2.retrieve(ca3);
    }
    if (!cap2.grab()) {
        std::cout << "camera 2 cannot be grabbed\n";
    }
    if (cap3.grab()) {
        cap3.retrieve(ca4);
    }
    if (!cap3.grab()) {
        std::cout << "camera 3 cannot be grabbed\n";
    }
    if (cap4.grab()) {
        cap3.retrieve(ca5);
    }
    if (!cap4.grab()) {
        std::cout << "camera 4 cannot be grabbed\n";
    }
    if (cap5.grab()) {
        cap3.retrieve(ca6);
    }
    if (!cap5.grab()) {
        std::cout << "camera 5 cannot be grabbed\n";
    }
    cv::imshow("Camera1", ca1);
    cv::imshow("Camera2", ca2);
    cv::imshow("Camera3", ca3);
    cv::imshow("Camera4", ca4);
    cv::imshow("Camera5", ca5);
    cv::imshow("Camera6", ca6);
    char c = waitKey(1);
    if (c == 'q') {
        destroyAllWindows();
        break;
    }
}
cap0.release();
cap1.release();
cap2.release();
cap3.release();
cap4.release();
cap5.release();

return 0;

}

在 cap4.grab() 处编译失败,基本上它说相机 4 和 5 不能被抓取(打开)。有人可以帮忙吗?非常感谢您提前。

图片

标签: c++opencvwindows-10video-capturemulti-camera-api

解决方案


推荐阅读