[英]Delay in capturing camera frames using openCV
我正在編寫一個使用opencv 2.49捕獲相機幀的程序。
我的問題是攝像頭蓋最多可以捕獲500 FPS。 但是在第5幀之后,捕獲幀下降到40 FPS,有時下降到500 FPS。
誰能想到為什么會這樣? 我如何解決捕獲幀數為500 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;
...
}
另一個改進將是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.