OpenCV -从播放显著提高帧率
OpenCV - Dramatically increase frame rate from playback
在OpenCV中有一种方法可以显著提高视频(.mp4)的帧率。我尝试了一些方法来增加视频的播放,包括:
增加帧率:
cv.SetCaptureProperty(cap, cv.CV_CAP_PROP_FPS, int XFRAMES)
跳帧:
for( int i = 0; i < playbackSpeed; i++ ){originalImage = frame.grab();}
和
video.set (CV_CAP_PROP_POS_FRAMES, (double)nextFrameNumber);
是否有其他方法可以达到预期的结果?如有任何建议,不胜感激。
只是为了澄清,播放速度并不慢,我只是在寻找一种方法,使它更快。
您正在使用旧的API (cv.CaptureFromFile)从视频文件捕获。
如果你使用新的c++ API,你可以以你想要的速率抓取帧。下面是一个非常简单的示例代码:
#include "opencv2/opencv.hpp"
using namespace cv;
int main(int, char**)
{
VideoCapture cap("filename"); // put your filename here
namedWindow("Playback",1);
int delay = 15; // 15 ms between frame acquisitions = 2x fast-forward
while(true)
{
Mat frame;
cap >> frame;
imshow("Playback", frame);
if(waitKey(delay) >= 0) break;
}
return 0;
}
基本上,您只需在每个循环中抓取一帧,并使用cvWaitKey()
在帧之间等待。你在每帧之间等待的毫秒数将设置你的加速。在这里,我设置了15毫秒,所以这个例子将播放一个30帧/秒的视频。速度的两倍(减去抓取一帧所需的时间)。
另一个选择,如果你真的想控制如何以及从视频文件中抓取什么,是使用GStreamer API来抓取图像,然后转换为OpenCV进行图像处理。你可以在这篇文章中找到一些关于这个的信息:MJPEG流和解码
相关文章:
- 如何提高 OpenCV 实时检测器应用程序的帧率?
- C++ 如何设置精确的帧率限制?
- 提高Basler相机的帧率
- 低帧率,仅使用地图和小地图绘制 (SFML)
- OpenCV视频阅读慢帧率
- C++SDL帧率脉冲
- OpenGL帧率:与窗口大小的连接
- 在openCV中编写可变帧率视频
- 快板5线程影响帧率
- OpenCV VideoWriter帧率问题
- 从帧逐帧删除对象(ROI内),然后在opencvc++中组合回视频
- 如何找到视频的帧率使用c++ opencv 2.4.10
- 控制帧率
- 我如何获得和改变OGRE应用程序的帧率?
- OpenCV慢相机帧率
- 数学:无论帧率如何,都能平稳地减速
- 如何改变libav解码帧率
- 发行控制游戏帧率的c++
- OpenCV -从播放显著提高帧率
- OpenCV:低帧率的限制是什么?