OpenCV VideoCapture IP摄像机重新连接

dab*_*lak 5 c++ video opencv video-capture ip-camera

我正在通过HTTP从相机中读取图像.这是代码:

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

while(1) {
    cap.read(src);
    // Other code
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是如果我在物理上断开相机的运行一段时间后,代码就会永远挂起cap.read(src);.

我需要一些方法来返回,read如果,比方说,5秒后没有新的图像.

还有另一个问题.如果在程序等待时重新连接摄像机,read则无论如何都会一直挂着.如果VideoCapture能够在重新连接相机后再次抓取帧,那将是一件好事.

Bir*_*mcu 1

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

如果没有捕获任何帧(相机已断开连接,或者视频文件中没有更多帧),则方法返回 false 并且函数返回 NULL 指针。

尝试这个

if(cap.read(src) == false ) 中断;