【问题标题】:Low FPS with OpenCV VideoCaptureOpenCV VideoCapture 的低 FPS
【发布时间】:2018-04-11 20:17:48
【问题描述】:

我正在尝试使用 OpenCV 显示视频流,但我在帧率方面遇到了可怕的问题。我的视频源最多可以输出 60 fps,但我将其限制为 30。问题是我以大约 2 fps 的速度接收它

我已尽可能简化我的程序以使其更易于阅读:

#include "opencv2/core/core.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <stdio.h>

using namespace cv;
using namespace std;

int main(int argc, char* argv[])
{


    Mat image1;
    int k;

     const char* right_cam_gst = "nvcamerasrc sensor-id=0 ! video/x-raw(memory:NVMM),\
                                              width=(int)640,\
                                              height=(int)360,\
                                              format=(string)I420,\
                                              framerate=(fraction)30/1 ! nvvidconv flip-method=2 ! video/x-raw,\
                                              format=(string)I420 ! videoconvert ! video/x-raw,\
                                              format=(string)BGR ! appsink";



    VideoCapture cap1 = VideoCapture(right_cam_gst);




   for (;;)
    {
       cap1 >> image1;

       imshow("image1", image1);

       if(waitKey(1) == 27)
        break;
    }

}

这应该以流允许的最快速度抓取和显示图像。对吧?

感谢大家的帮助!

编辑看起来如果我只是尽可能快地显示图像,它只会以大约 1fps 的速度显示。这完全消除了相机。

系统: ubuntu on nvidia Jetson TX1

【问题讨论】:

  • 你在终端测试过gstreamer管道吗?
  • 是的。我得到满 30 fps。
  • 您可以尝试删除 imshow 和 waitKey,添加一些计数器并尝试刚刚捕获的 fps 吗?目的是找出哪个部分如此慢,捕获或渲染或等待键(等待至少 1 毫秒但可能更长)。
  • 你的来源是什么?它是如何附着的?你的平台是什么?
  • 看起来所有的延迟都来自 waitkey()。进行测量时,我发现它也平均约为 0.75 秒。为什么会这样?

标签: c++ opencv video opencv3.0


【解决方案1】:

找到答案了!看起来即使我的以太网连接速度很快,它还是以某种方式使用服务器进行计算。 (不知道如何)。看到这个帖子:https://devtalk.nvidia.com/default/topic/1025856/very-slow-framerate-jetson-tx1-and-opencv/?offset=8

我禁用了 Xserver 并直接插入,我得到了 60 FPS。

【讨论】:

    猜你喜欢
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    相关资源
    最近更新 更多