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;
     .... 
    }

Kinect:如何使用事件处理程序递增变量

如果我在事件处理程序中打印出变量,它会递增。但是公共初始值设定项方法中的那个保持 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
    }
}