具有OpenCV VideoCapture的低FPS

时间:2017-10-30 18:46:22

标签: c++ opencv video opencv3.0

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

我尽可能简化了我的程序,以便于阅读:

#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。这完全取消了相机。

系统: uvntu on nvidia Jetson TX1

1 个答案:

答案 0 :(得分:0)

找到答案!看起来即使我的以太网连接很快,它也不知何故使用服务器进行计算。 (不知道如何)。请参阅此帖子:https://devtalk.nvidia.com/default/topic/1025856/very-slow-framerate-jetson-tx1-and-opencv/?offset=8

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