我正在尝试使用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
答案 0 :(得分:0)
找到答案!看起来即使我的以太网连接很快,它也不知何故使用服务器进行计算。 (不知道如何)。请参阅此帖子:https://devtalk.nvidia.com/default/topic/1025856/very-slow-framerate-jetson-tx1-and-opencv/?offset=8
我禁用了Xserver并直接插入,我得到了60 FPS。