OpenCV VideoCaptures иногда возвращает пустые кадры

Я использую следующий код для захвата видеокадров с веб-камеры USB с помощью openCV3 в MS VC++ 2012. Но проблема в том, что иногда я могу отображать захваченные кадры со скоростью 30 кадров в секунду, но иногда я получаю черные кадры с очень низким fps ( или с большой задержкой). Другими словами, программа работает случайным образом. Вы знаете, как я могу решить эту проблему? Я пробовал разные решения, предложенные в stackoverflow или некоторых других местах, но ни одно из них не решило проблему.

VideoCapture v(1);
v.set(CV_CAP_PROP_FRAME_WIDTH, 720);
v.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
if(!v.isOpened()){
   cout << "Error opening video stream or file" << endl;
   return;
}

Mat Image;
namedWindow("win",1);

while(1){
    v >> Image;
    imshow("win", Image);
}

person user2957386    schedule 23.02.2016    source источник


Ответы (1)


попробуй это:

while(1){
    v >> Image;
    imshow("win", Image);
    char c=waitKey(10);//add a 10ms delay per frame to sync with cam fps
    if(c=='b')
       {
            break;//break when b is pressed
       }
}
person Saransh Kejriwal    schedule 04.03.2016