2010-11-30 113 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

相关问题