Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Kinect为简单静态手势创建手势定义-第2部分_C#_Wpf_Kinect_Gesture Recognition - Fatal编程技术网

C# 使用Kinect为简单静态手势创建手势定义-第2部分

C# 使用Kinect为简单静态手势创建手势定义-第2部分,c#,wpf,kinect,gesture-recognition,C#,Wpf,Kinect,Gesture Recognition,我已经实现了示例代码,并使用了“Joint.ID”而不是“Joint.Type”,我只需要确定是否/如何在循环中连续检查此代码。任何建议都将不胜感激。谢谢 忠告:- void newSensor\u AllFramesReady在颜色/深度/骨架同步时激发我不太确定将此方法放置在何处。 checkHand方法需要在每一轮线程中进行检查 迄今为止的代码:- void newSensor_AllFramesReady(object sender, SkeletonFrameReadyEventArg

我已经实现了示例代码,并使用了“Joint.ID”而不是“Joint.Type”,我只需要确定是否/如何在循环中连续检查此代码。任何建议都将不胜感激。谢谢

忠告:-

  • void newSensor\u AllFramesReady
    在颜色/深度/骨架同步时激发我不太确定将此方法放置在何处。

  • checkHand
    方法需要在每一轮线程中进行检查

  • 迄今为止的代码:-

    void newSensor_AllFramesReady(object sender, SkeletonFrameReadyEventArgs e)
    {
        //Get a skeleton
    
        SkeletonFrame skeletonSet = e.SkeletonFrame;
    
        SkeletonData skeleton = (from s in skeletonSet.Skeletons
                                 where s.TrackingState == SkeletonTrackingState.Tracked
                                 select s).FirstOrDefault();
    
        if (skeleton == null)
        {
            return;
        }
        else if (skeleton != null)
        {
            checkHand(skeleton.Joints[JointID.Head], skeleton.Joints[JointID.HandRight], skeleton.Joints[JointID.HandLeft]);
        }
    }
    
    public void checkHand(Joint head, Joint rhand, Joint lhand)
    {
        if (rhand.Position.X > head.Position.Y)
        {
            MessageBox.Show("Right hand up!");
        }
        else if (lhand.Position.Y > head.Position.Y)
        {
            MessageBox.Show("Left hand up!");
        }
    }
    

    确保将newSensor_AllFramesReady指定为AllFramesReady事件的事件处理程序。没有必要把它放在循环中。newSensor_AllFramesReady每秒将被调用30次(或者不管kinect的刷新率如何)

    Kinect.AllFramesReady+=新事件处理程序(newSensor\u AllFramesReady);
    
    Kinect.AllFramesReady += new EventHandler<AllFramesReadyEventArgs>(newSensor_AllFramesReady);