C# 向Kinect的多源框架添加延迟
我在一个与Kinect、MSSDK2、C#和WPF控件合作的项目中工作 我将事件处理程序MultisourceFrameArrized方法设置为读取所有帧类型。根据MS文档,当一帧从Kinect到达时,这将运行,并且大约为30 FPS 我想限制这种运行行为(延迟),以减少捕获,例如5 FPS、10 FPSC# 向Kinect的多源框架添加延迟,c#,wpf,kinect-sdk,C#,Wpf,Kinect Sdk,我在一个与Kinect、MSSDK2、C#和WPF控件合作的项目中工作 我将事件处理程序MultisourceFrameArrized方法设置为读取所有帧类型。根据MS文档,当一帧从Kinect到达时,这将运行,并且大约为30 FPS 我想限制这种运行行为(延迟),以减少捕获,例如5 FPS、10 FPS 我尝试使用Task.Delay(ms)和Thread.Sleep(ms)(as)。如果这个问题很愚蠢,我很抱歉,但我还不能解决它。保留一个计数器frameCount,并通过忽略帧来保持较低的f
我尝试使用Task.Delay(ms)和Thread.Sleep(ms)(as)。如果这个问题很愚蠢,我很抱歉,但我还不能解决它。保留一个计数器
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
}
如果您希望花一些时间处理当前帧,然后请求最新帧,则可以订阅取消订阅MultisourceFrameArrized 所以,你应该这样做
private void msfr_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e)
{
_reader.MultiSourceFrameArrived -= msfr_MultiSourceFrameArrived;
/***********************Process your frames here**********************/
_reader.MultiSourceFrameArrived += msfr_MultiSourceFrameArrived;
}
一个简单但强大的解决方案,谢谢Rafaf Tahsin。