我想让视频在循环中播放。我想检查它是否到达视频的末尾,以便我可以重新实现它;如何让它循环?
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();
};
答案 0 :(得分:5)
VideoCapture::read()
返回一个布尔值。如果false
表示相机已断开连接或视频文件中没有其他帧。
答案 1 :(得分:2)
显然..在视频结尾处有一个空框架,你可以这样检查那个:
if(image.empty()){
cap = new VideoCapture(fileName);
}else{
image.copyTo(*_stream);
}