1

我有一个视频,我想处理帧。

VideoCapture capture("movie.mpg");

while(true) {
  Mat frame;
  capture >> frame;

  // This may take some time to finish
  processFrame(frame);

  if (waitKey(80) == 'q')
    break;
}

问题是,使用硬编码延迟waitKey(80)会导致视频的 fps 不正确。例如,上面的代码尝试以每秒 12 帧的速度显示视频,但如果processFrame()需要一些时间才能完成,则 fps 会降低,视频看起来会滞后。

我需要在这里对延迟值进行一些计算。您如何动态分配值以使 fps 保持在 12?谢谢。

4

1 回答 1

0

您可以通过查询捕获接口来检索视频的实际FPS :

double fps = capture.get(CV_CAP_PROP_FPS);

并且您还可以使用 发现视频中的总帧数CV_CAP_PROP_FRAME_COUNT

有了这些信息,您可以进行简单的计算并找出确切的延迟时间。

于 2012-06-25T00:33:55.260 回答