0

我正在尝试让视频循环播放。我想检查它是否到达了视频的结尾,以便我可以重新实例化它;我如何让它循环?

 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();
};
4

2 回答 2

5

VideoCapture::read()返回一个布尔值。如果false这意味着相机已断开连接或视频文件中没有更多帧。

于 2015-10-14T11:15:24.523 回答
2

显然......在视频的末尾有一个空帧,您可以通过以下方式检查该帧:

if(image.empty()){
    cap = new VideoCapture(fileName);
}else{
    image.copyTo(*_stream);
}
于 2013-07-18T14:21:13.490 回答