gpt4 book ai didi

c++ - 使用openCV捕获相机帧的延迟

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:08 26 4
gpt4 key购买 nike

我正在编写一个程序来使用 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;
}
}

最佳答案

您必须测量与拍摄最后一张图像的时间的差异,而不是将图像保存到变量中所花费的时间。

伪代码:

time = -1;
while (true)
{
new_time = now();
if (time != -1)
{
time_diff = new_time - time;
if (time_diff == 0) // avoid null pointer exception
cout << "infinite FPS";
else
cout << 1000000.d / double(time_diff) << "FPS";
}
time = new_time;
...
}

另一个改进是:

  1. 每秒打印一次 FPS,而不是每次拍照时打印一次。
  2. 使用时钟的周期属性而不是 1000000。
  3. 我想你想要“== 27”而不是“>= 27”

关于c++ - 使用openCV捕获相机帧的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57296813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com