我有一个复杂的问题,我已经研究了好几个星期。我的程序是一个教育软件,它使用网络摄像头来分析物理实验(例如,振荡运动)。我经历了以下几点:
测量不准确
(ISampleGrabberCB.BufferCB(SampleTime))
样本:0、1、2 ...看起来
更好的。我看的时候就知道了
在运动曲线上。
我的主要目标是减少不准确度,这是我试图通过限制FPS(导致处理器繁忙)来实现的。
在网络摄像头中)具有自动fps和曝光
时间。取决于照明
他们波动。
用这个,因为我没有任何东西
支持网络摄像头。在这个
例如他们可以将其用于Logitech
网络摄像头:http://social.msdn.microsoft.com/Forums/en/windowsdirectshowdevelopment/thread/47b1317d-87e6-4121-9189-0defe1e2dd44
最佳答案
来自Time and Clocks in DirectShow上的MSDN文章:
我从未尝试过使用过滤器中的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) );
关于c# - 网络摄像头时间不正确,设置曝光时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4318600/