繁体   English   中英

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 fps的速度播放30 fps视频。 两倍的速度(减去抓取框架所需的时间)。

如果您真的想控制从视频文件中获取图像的方式和内容,另一种选择是使用GStreamer API捕获图像,然后转换为OpenCV进行图像处理。 您可以在这篇文章中找到有关此信息: MJPEG流和解码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM