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

时间:2012-02-25 17:55:06

标签: c# wpf kinect gesture-recognition

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

建议通知: -

    当颜色/深度/骨架同步时,
  1. void newSensor_AllFramesReady会触发。 我不太确定在何处放置此方法。

  2. 每一轮线程都需要检查
  3. checkHand方法。

  4. 到目前为止

    代码: -

    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!");
        }
    }
    

1 个答案:

答案 0 :(得分:0)

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

Kinect.AllFramesReady += new EventHandler<AllFramesReadyEventArgs>(newSensor_AllFramesReady);