2015-10-16 19 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; 
    }