vs+opencv调用同一usb口的两路摄像头

买了一个双目摄像头,只有一个usb口那种,支持两路设备识别和输出,我单独调用任何一路都能输出图像,但是同时调用两路显示时,第二路总是打不开,有没有哪个大佬遇到过相似的问题?怎么解决的呢?
附上我的代码:

#include

#include

using namespace cv;
using namespace std;
int main()
{
//【1】从摄像头读入视频

VideoCapture capture(2);
if(!capture.isOpened())

{cout<< "cannot open the camera.";cin.get();return -1;}
VideoCapture capture1(1);
if (!capture1.isOpened())
{
cout << "cannot open the camera1."; cin.get(); return -1;
}
while (1)
{
Mat frame; //定义一个Mat变量,用于存储每一帧的图像

Mat frame1; //定义一个Mat变量,用于存储每一帧的图像

    capture >> frame;  //读取当前帧   


    if (frame.empty())
    {
        printf("--(!) No captured frame -- Break!");
        //break;                  
    }
    else
    {
        imshow("原图", frame); //显示当前帧          
    }
capture1 >> frame1;  //读取当前帧   
    if (frame1.empty())
    {
        printf("--(!) No captured frame1 -- Break\r\n");
        //break;                  
    }
    else
    {
        imshow("原图1", frame1); //显示当前帧        
    }

    waitKey(30); //延时30ms  
}
return 0;

}

楼主这个问题问得让人费解啊
你说的设备是一个双目摄像头,一个USB输出,那这样的情况数据肯定是串行出来的,你能够单独调出每一路的视频截图,这说明这个设备是正常工作的。
那么现在问题来了,你希望同时看到两路视频,这两路为什么不能采用分别调用的方式来解决呢?
从你的代码看,前面的定义mat做完,后面的catpture就有了一个先后之分,你声明的时候干脆一起声明啊,缩进也不一样,这个结构体不知道能不能正常实现你想表达的意思。

我不太明白您的意思,我这样改了只有也还是不行啊:
int main()
{
VideoCapture capture(2),capture1(1);
if (!capture.isOpened())
{ cout << "cannot open the camera."; cin.get(); return -1; }
if (!capture1.isOpened())
{ cout << "cannot open the camera1."; cin.get(); return -1;}
while (1)
{
Mat frame,frame1;
capture >> frame;
if (frame.empty())
{
printf("--(!) No captured frame -- Break!");

}
else
{
imshow("原图", frame);

}
capture1 >> frame1;
if (frame1.empty())
{
printf("--(!) No captured frame1 -- Break\r\n");

}
else
{
imshow("原图1", frame1);
}
waitKey(30);
}
return 0;
}图片说明