Переподключение IP-камеры OpenCV VideoCapture

Я читаю изображения с камеры через HTTP. Это код:

Mat src;
VideoCapture cap();
cap.open("http://192.168.1.10:8008"); // IP camera

while(1) {
    cap.read(src);
    // Other code
}

Он работает отлично, но после некоторого времени работы, если я физически отключу камеру, код навсегда зависнет в cap.read(src);.

Мне нужен какой-то способ вернуться из read, если, допустим, через 5 секунд нет нового изображения.

Есть еще одна проблема. Если камера переподключается во время ожидания программы в read, то она все равно зависает. Было бы хорошо, если бы VideoCapture мог снова захватывать кадры после повторного подключения камеры.


person dablak    schedule 17.07.2013    source источник


Ответы (1)


http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#videocapture-read

Если кадры не были захвачены (камера была отключена или в видеофайле больше нет кадров), методы возвращают false, а функции возвращают указатель NULL.

попробуй это

if(cap.read(src) == false ) break;

person Birol Kuyumcu    schedule 27.08.2013