我想为Kinect
传感器编写 Initializer 类。它收集关节' 10o帧的坐标(只有存在骨架的那些)然后计算平均位置。
这个代码有一个变量frame
,每次找到 Skeleton 时它会递增。此代码不起作用,因为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 :(得分:0)
尝试在代码中添加断点以隔离问题。该事件可能没有被提出。
答案 1 :(得分:0)
如果我在事件处理程序中打印出变量,它会递增。但是公共初始化方法中的那个保持为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
}
}