我有一个视频,我想处理这些帧。
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?感谢。
答案 0 :(得分:0)
您可以通过查询捕获界面来检索实际的FPS of the video:
double fps = capture.get(CV_CAP_PROP_FPS);
您还可以使用CV_CAP_PROP_FRAME_COUNT
发现视频中的总帧数。
使用该信息,您可以进行简单的计算,并找出延迟的确切时间。