为Kinect的MultiSourceFrameArrived添加延迟

Add a delay to MultiSourceFrameArrived of Kinect

我正在使用 Kinect、MS SDK 2、C# 和 WPF 控件开发一个项目。

我设置事件处理程序 MultiSourceFrameArrived 方法来读取所有帧类型。根据 MS 文档,它在帧从 Kinect 到达时运行,并且大约为 30 FPS。

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

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

保持计数器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
}

如果您希望花一些时间处理当前帧然后请求最新的帧,您可以订阅取消订阅MultiSourceFrameArrived

所以,你应该这样做

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

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

        _reader.MultiSourceFrameArrived += msfr_MultiSourceFrameArrived;
    }