2015-10-16 65 views
1

我正在使用Kinect,MS SDK 2,C#和WPF控件进行项目工作。向Kinect的MultiSourceFrameArrived添加延迟

我设置事件处理程序MultiSourceFrameArrived读取所有帧类型的方法。根据MS文档,当Kinect帧到达时,它会运行,速度大约为30 FPS。

我想限制此运行行为(延迟)以减少捕获,例如以5 FPS,10 FPS。

我尝试使用Task.Delay(ms)和Thread.Sleep(ms)(如in)。对不起,如果这个问题会很愚蠢,但我还不能解决它。

回答

1

保持计数器frameCount并通过忽略帧来保持减少的fps。

static void msfr_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e) 
{ 
    frameCount++; 
    if (frameCount % 6 != 0) return; 

    // Do whatever you want cause you are pirate ... :D 
} 
+1

一个简单但功能强大的解决方案,谢谢Rafaf Tahsin。 – Carl

0

如果你想花一些时间来处理当前帧,然后索取最新的一个,你可以订阅退订到MultiSourceFrameArrived

所以,你务必做好这样的事情

private void msfr_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e) 
    { 
     _reader.MultiSourceFrameArrived -= msfr_MultiSourceFrameArrived; 

     /***********************Process your frames here**********************/ 

     _reader.MultiSourceFrameArrived += msfr_MultiSourceFrameArrived; 
    }