为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;
}
我正在使用 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;
}