如何判断视频是否在opencv中结束?

时间:2013-07-18 13:39:17

标签: c++ opencv video-capture

我想让视频在循环中播放。我想检查它是否到达视频的末尾,以便我可以重新实现它;如何让它循环?

 VideoStream::VideoStream(Filters* f, char* fileNam):
            filter(f),
            fileName(fileNam){
    TestON = true;
    cap = new VideoCapture(fileNam);
};


void VideoStream::readFrame(){
    if(!cap->isOpened())  // check if we succeeded
    cerr<<"cannot open video file";
    if(cap->get(CV_CAP_PROP_POS_AVI_RATIO==1)){
          cap = new VideoCapture(fileName);
    }
    Mat image;
    cap->read(image);
    if(!image.empty())
        imshow("haha", image);
    waitKey(1);
    image.release();
};

2 个答案:

答案 0 :(得分:5)

VideoCapture::read()返回一个布尔值。如果false表示相机已断开连接或视频文件中没有其他帧。

答案 1 :(得分:2)

显然..在视频结尾处有一个空框架,你可以这样检查那个:

if(image.empty()){
    cap = new VideoCapture(fileName);
}else{
    image.copyTo(*_stream);
}