Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在打开的Cv中重复视频_C++_Opencv_Video - Fatal编程技术网

C++ 在打开的Cv中重复视频

C++ 在打开的Cv中重复视频,c++,opencv,video,C++,Opencv,Video,我正在尝试在视频刚到达第50帧(即,我无限期地重复前50帧)后的开始处开始视频。我读到过一篇关于以前的文章,其中一位回复者说,唯一可行的方法是保存帧,然后重新显示它们。但是,我可以在VideoCapture对象的开头设置一个计数器,然后继续使用>>操作符抓取帧吗?这就是我迄今为止所尝试的: VideoCapture cap;//I select the video by passing it as an argument though the terminal. while(1){ i

我正在尝试在视频刚到达第50帧(即,我无限期地重复前50帧)后的开始处开始视频。我读到过一篇关于以前的文章,其中一位回复者说,唯一可行的方法是保存帧,然后重新显示它们。但是,我可以在VideoCapture对象的开头设置一个计数器,然后继续使用>>操作符抓取帧吗?这就是我迄今为止所尝试的:

VideoCapture cap;//I select the video by passing it as an argument though the terminal.
while(1){

    if (FrameIndex == 50){  
    //cap.set(CV_CAP_PROP_POS_FRAMES, 0);
    cap.set(CV_CAP_PROP_POS_AVI_RATIO , 0);
    cap >> frame;
    }
    else{
    cap >> frame;
    }

  //#################################### 
  //# Rest of the code inside the loop # 
  //#################################### 


    FrameIndex++;
    FrameIndex = FrameIndex%50;

}

CV_CAP_PROP_POS_AVI_RATIO不是帧“计数器”。get()方法的doc表示它是“视频文件的相对位置:0-胶片的开始,1-胶片的结束”。在set()方法的doc中根本没有这样的参数

因此,您最好只需关闭并再次打开捕获即可回到开始


对于一个感觉如此简单和自然的手术来说,这似乎有点太过分了。但实际上,视频解码并不是那么简单。这些帧依赖于其他帧-因此仅知道您想要帧编号N是不够的,通常情况下,您需要前面的帧以及下面的帧(例如)。这并不是说这无法实现,而是相当复杂或至少不容易实现。

将CV_CAP_PROP_POS_FRAMES设置为0,是否不正常?是的,我得到了以下错误:“OpenCV错误:断言失败(0