opencv 打开双目摄像头

std::thread openVideo1(openVideoTask, video, scamera1 + 700);
std::thread openVideo2(openVideoTask, video2, scamera2 + 700);
openVideo1.join();
openVideo2.join();

static void openVideoTask(cv::VideoCapture &videoCap,int index){
if (videoCap.open(index)){
    cv::Mat tmpFrame;
    videoCap.read(tmpFrame);
}

}
打开摄像头总是失败,把代码都放在主线程中执行,则可正常打开

#include
using namespace std;
int main()
{

//initialize and allocate memory to load the video stream from camera

cv::VideoCapture camera0(1);

camera0.set(CV_CAP_PROP_FRAME_WIDTH,320);

camera0.set(CV_CAP_PROP_FRAME_HEIGHT,240);

cv::VideoCapture camera1(0);

camera1.set(CV_CAP_PROP_FRAME_WIDTH,320);
camera1.set(CV_CAP_PROP_FRAME_HEIGHT,240);

if( !camera0.isOpened() )
return 1;

if( !camera1.isOpened() )
return 1;
while(true)
{

//grab and retrieve each frames of the video sequentially

cv::Mat frame0;

camera0 >> frame0;

cv::Mat frame1;

camera1 >> frame1;

cv::imshow("left", frame0);

cv::imshow("right", frame1);

// std::cout << frame1.rows() << std::endl;

//wait for 40 milliseconds

int c = cvWaitKey(40);

//exit the loop if user press "Esc" key (ASCII value of "Esc" is 27)

if(27 == char(c))
break;
}

return 0;
}