【发布时间】:2019-12-09 07:55:54
【问题描述】:
我正在编写一个程序来使用 opencv 2.49 捕获相机帧。
我的问题是相机盖可以捕捉到 500 FPS。但是在第 5 帧捕获后,帧数会下降到 40 FPS,有时会降到 500 FPS。
有人知道为什么会这样吗?如何修复 500 FPS 的捕获帧。
I have attached the output FPS
while(true)
{
cout << "\nStart while loop:" << endl;
auto t1 = chrono::high_resolution_clock::now();
Mat curFrame;
cap >> curFrame;
if( curFrame.empty() ) break; // end of video stream
auto t2 = chrono::high_resolution_clock::now();
auto cap_time = chrono::duration_cast<chrono::microseconds>( t2 - t1 ).count();
cout << "cap_time :" << cap_time << " microseconds, " << 1000000/(float)cap_time << " FPS" << endl;
imshow("Original", curFrame);
if (waitKey(1) >= 27)
{
cout << "esc key is pressed by user" << endl;
break;
}
}
【问题讨论】:
-
不,我正在使用 Linux 构建在 Xilinx Zedboard 上运行的应用程序。代码与-O2结合使用。
-
即使是 640x480 RGB 图像也只有大约 1 MB。所以 500 fps 几乎会使最快的 USB3 连接饱和,并且需要 5 倍于千兆以太网的带宽……相对而言,很少有相机超过 30 fps,甚至更少 60 fps。
标签: c++ linux opencv video-capture