OpenCV VideoWriter无法正确设置FPS

时间:2014-08-06 14:25:02

标签: c++ qt opencv

在我的程序中,我通过OpenCV从网络摄像头或视频文件中读取并通过Qt显示它。 我从视频属性中获取fps并相应地设置计时器。

我没有问题阅读视频,fps校准很好(因为网络摄像头显示0fps,我将其设置为30) 但是当我录制图像时,我将输出视频的fps设置为与原始视频相同,但是当我在VLC或Windows Media Player中读取时,视频会加速。

最奇怪的是,当我在我的节目中播放录制的视频时,fps很好,视频也没有加速。


以下是我的表现方式:

Constructor()
{
    // Initializing the video resources
    cv::VideoCapture capture;
    cv::VideoWriter writer;
    cv::Mat frame;
    int fps;

    if (webcam)
    {
        capture.open(0);
        fps = 30;
    }
    else
    {
        capture.open(inputFilePath);
        fps = this->capture.get(CV_CAP_PROP_FPS);
    }
    // .avi
    writer = cv::VideoWriter(outputFilePath, CV_FOURCC('M', 'J', 'P', 'G'), fps, frame.size());

    // Defining the refresh timer;
    QTimer timer = new QTimer();
    connect(timer, SIGNAL(timeout()), this, SLOT(updateFeed()));
    this->timer->start(1000 / fps);
}

updateFeed()
{
    // ... display the image in a QLabel ... at a reasonnable speed.
    writer.write(frame);
}

现在有什么我做错了吗? 感谢

0 个答案:

没有答案