录制视频时,我的FPS急剧下降

时间:2016-11-07 09:50:33

标签: opencv

我正在使用OpenCV为以30 FPS运行的全高清摄像机录制视频。我知道相机的FPS,因为我通过计算有效帧的数量来测量它(这也与规格一致)。我通过使用5毫秒的秒计时器来完成此操作。这是我每5毫秒运行一次的代码。

cv::Mat frame;
if (capture.read(frame)){

    showCurrentFrame(frame);
    fpsCounter.newFrame();

    ui->labelVideo->setText("Video (" + QString::number(frame.cols) + "x" + QString::number(frame.rows) + ")");
    ui->labFPS->setText("FPS: " + QString::number(fpsCounter.getFPS()));

    if (isRecording){
        recorder << frame;
        fpsRecordCounter++;
    }

}

当我按下“开始录制按钮”

时,我将录制视频的FPS设置为30
    recorder.open(currentVideoFile.toStdString(),
                  VIDEO_CODEC_FOURCC, // Tells it to record MJPEG
                  VIDEO_REC_FPS,  // Define with 30
                  frameSize)){  // 1920x1080

我在我的工作站中开发了我的程序,它使用Qt和OpenCV 2.4.5运行Centos 7。当我在桌面PC上录制时,FPS显示始终为30左右。

但是,这需要从行驶中的汽车进行记录。因此,我将代码复制粘贴到我的笔记本电脑中,并将其编译为零问题。

我的笔记本电脑使用Debian Testing和OpenCV 2.4.9。在这里观察到减速。

由于我正在使用Qt,我需要处理cv :: Mat才能显示它。我在showCurrentFrame函数中执行此操作。

如果我在录制时停用此功能,我可能会获得23 FPS(并且无法看到我正在录制的内容) 如果我把它保留在上面的代码中,我得到大约16~17 FPS。

我认为我的第一件事是我的电脑不够强大,但不应该。这是模型:

https://www.asus.com/Notebooks/ASUS_VivoBook_S550CA/specifications/

这是具有500 Gb HDD的I5变体。

所以我很茫然。这是OpenCV上的某种bug,它是在较新的openCV版本中引入的,还是仅仅是因为我的笔记本电脑不够强大?

0 个答案:

没有答案