我有一个复杂的问题,我已经研究了好几个星期。我的程序是一个教育软件,它使用网络摄像头来分析物理实验(例如,振荡运动)。我经历了以下几点:

  • 如果处理器繁忙,则时间
    测量不准确
    (ISampleGrabberCB.BufferCB(SampleTime))
  • 如果我不使用时间,请数一下
    样本:0、1、2 ...看起来
    更好的。我看的时候就知道了
    在运动曲线上。

  • 我的主要目标是减少不准确度,这是我试图通过限制FPS(导致处理器繁忙)来实现的。
  • 我的网络摄像头(Intel Classmate PC的内置
    在网络摄像头中)具有自动fps和曝光
    时间。取决于照明
    他们波动。
  • IAMStreamConfig.AvgTimePerFrame无效。
  • 网络摄像头不支持
  • IAMCameraControl。
  • IKsPropertySet:我不知道如何
    用这个,因为我没有任何东西
    支持网络摄像头。在这个
    例如他们可以将其用于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/

    10-11 04:47