2010-11-30 152 views
2

我有一個複雜的問題,我一直在爲此工作數週。我的程序是一個使用網絡攝像頭分析物理實驗(例如擺動運動)的教育軟件。我所經歷的folowings:攝像頭時間不準確,設置曝光時間

  • 如果處理器忙,時間 測量不準確 (ISampleGrabberCB.BufferCB(SampleTime))
  • 如果我不使用的時候,只需數 的樣本:0,1,2 ...看起來更好 。當我在運動的曲線上看 時,我感覺到這一點。

我的主要目標是減少不準確性,我試圖通過限制FPS(導致繁忙的處理器)實現。

回答

1

::在本 例如,它們可以使用它的羅技 網絡攝像頭

支持IReferenceClock接口可以作爲一個參考時鐘的任何對象。訪問硬件計時器的過濾器可以提供時鐘(例如音頻渲染器),或者過濾器圖形管理器可以創建一個使用系統時間的時鐘。

我從來沒有試圖從過濾器使用IReferenceClock,但它可能會懷疑它可能不會提供您需要的高分辨率時鐘。

這個SO post on high resolution timers可能是你需要的。

IAMStreamConfig.AvgTimePerFrame僅供參考,試圖調整它不會產生任何影響。這只是一個值,您可以從中計算出視頻流的平均幀速率。

例如

VIDEOINFOHEADER* pVih = (VIDEOINFOHEADER*)m_MediaTypes.VideoType.pbFormat; 

if(pVih) 
    int nFrameRate = (int)((double) (10000000.0f/pVih->AvgTimePerFrame)); 
+0

感謝您的回覆。我嘗試過不同的高分辨率定時器,但這並不能解決我的問題。我需要樣本的準確時間,如果我知道 在另一個時刻的準確時間,這是沒有幫助的。如果我實現了IReferenceClock,並將其構建到我的圖表中,這對我來說需要什麼? (我想不是,出於同樣的原因) IAMStreamConfig.AvgTimePerFrame:您可以更改AvgTimePerFrame的值,它適用於我與其他webcams,但不適用於此。我必須優化我的程序 到英特爾Classmate PC,所以我必須使用此硬件。 – bsebi 2010-12-01 15:22:37

相關問題