Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Win10 VS17中的OpenCV VideoCapture无法打开四个以上的USB 3.0摄像头_C++_Opencv_Windows 10_Video Capture_Multi Camera Api - Fatal编程技术网

C++ Win10 VS17中的OpenCV VideoCapture无法打开四个以上的USB 3.0摄像头

C++ Win10 VS17中的OpenCV VideoCapture无法打开四个以上的USB 3.0摄像头,c++,opencv,windows-10,video-capture,multi-camera-api,C++,Opencv,Windows 10,Video Capture,Multi Camera Api,我正在尝试使用OpenCV库中的VideoCapture函数在VS17 win10 OpenCV环境中设置多摄像头系统。摄像头采用Basler USB 3.0(3840*2748单色)。我没有问题打开和流到四个摄像头。但是,第五个或更多摄像头无法打开。然而,使用Basler软件可以访问所有六个摄像头,而不会出现任何问题。我不确定是否存在硬件限制(如USB带宽或PCI总线),这不应该是因为在Basler SDK中,所有摄像头都可以正常使用 我试图设置较低分辨率的图像,看看它是否是USB带宽限制,但

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

我试图设置较低分辨率的图像,看看它是否是USB带宽限制,但仍然不起作用

int main(){

视频捕获cap0(0)、cap1(1)、cap2(2)、cap3(3)、cap4(4)、cap5(5);
Mat ca1、ca2、ca3、ca4、ca5、ca6;
cv::namedWindow(“Camera1”,窗口正常);
cv::namedWindow(“Camera2”,窗口正常);
cv::namedWindow(“Camera3”,窗口正常);
cv::namedWindow(“Camera4”,窗口正常);
cv::namedWindow(“Camera5”,窗口正常);
cv::namedWindow(“Camera6”,窗口正常);
while(true){
if(cap0.grab()){
cap0.检索(ca1);
}
如果(!cap0.grab()){

std::不能仅仅使用Basler SDK进行图像采集。但我正在尝试自动化图像处理过程。使用opencv会更容易。好吧,然后在opencv github上创建一个错误报告,但老实说,我不会屏住呼吸。你认为有多少开源库的维护人员有6个这样的摄像头可以使用是否尝试重现这个问题?|另外,VideoCapture API是支持几十个不同后端的最小公分母。直接使用SDK您可以获得更多的控制权。感谢您的输入。
    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;