Kinect:如何使用事件处理程序递增变量
本文关键字:变量 程序 事件处理 何使用 Kinect | 更新日期: 2023-09-27 17:56:19
我想为传感器编写一个初始值设定项Kinect
类。它收集 10o 帧的关节坐标(仅收集存在骨架的帧),然后计算平均位置。
此代码具有变量frame
每次找到骨架时都会递增。此代码不起作用,因为EventHandler
似乎没有递增变量。
Class Initializer
int frame = 0;
public Initializer(KinectSensor sensor)
{
sensor.SkeletonFrameReady += InitSkeletonEvent;
sensor.SkeletonStream.Enable();
Console.WriteLine(done);
if (frame == 100)
{
sensor.SkeletonFrameReady -= InitSkeletonEvent;
//.. other code
}
}
private void InitSkeletonEvent(object sender, SkeletonFrameReadyEventArgs e)
{
....
frame += 1;
....
}
如果我在事件处理程序中打印出变量,它会递增。但是公共初始值设定项方法中的那个保持 0
这是因为if (frame == 100)
是在事件订阅后立即调用的,它不会等到处理程序被调用 100 次。
尝试将if (frame == 100)
移动到处理程序
private void InitSkeletonEvent(object sender, SkeletonFrameReadyEventArgs e)
{
....
frame += 1;
....
if (frame == 100)
{
// assign 'sensor' to the private field in 'Initializer' method
sensor.SkeletonFrameReady -= InitSkeletonEvent;
//.. other code
}
}