2014-02-13 35 views
0

我想知道cvQueryFrame()如何以先前設置的幀速率捕獲和提供幀。cvqueryframe()如何根據設置的幀速率從相機中檢索幀?

在我的程序中,我在while(1)循環的每次迭代開始時捕獲一個新幀。我已將幀速率設置爲每秒1幀。因此完成一次交互所需的時間應該是1秒或更長。但是,當我使用cvGetTickCount()函數計算每次迭代的時間時,它顯示每次迭代需要250ms到350ms的時間。

這影響了我的其他條件取決於時間。 我懷疑cvQueryFrame()不按照設置的幀速率工作。

誰能告訴我可能是什麼原因?

回答

0

getTickCount計數cpu時間,也只適用於當前線程。 (所以當你發出一個'睡眠'命令或做任何io,它不會被這樣計算)

要正確計算fps,你需要另一種計時器,計數壁時間而不是不幸的是,我們在這裏得到了非常多的操作系統依賴)。

另外,它可能很大程度上是您的請求幀速率沒有得到凸輪驅動程序正確的尊重。

整個highgui框架「易用性」更提出...

喔,順便說一句,請搬過來的C++ API。他們停止開發4年前已經使用的舊c-api,它只用於維護,而且你可能不應該用它開發任何新的東西。

+0

它不是像cvGetTickCount顯示錯誤的值。我在while循環中打印了時間值。這個值每秒打印3-4次。所以很顯然,幀檢索不會以1 FPS的速度進行。那麼它是凸輪驅動程序問題還是別的? – Mahesh