从Kinect for Windows开始 - SDK 1.7

时间:2013-07-12 12:34:03

标签: kinect kinect-sdk

我从Kinect SDK 1.7开始,使用KinectRegion和其他控件,如工具包中的KinectTileButton和KinectScrollViewer。我的问题是:

  • 如何让KinectRegion与左右手一起使用?
  • SDK 1.7是否准备好进行缩放?
  • 如何检测抓地力和释放?
  • 互联网上提供的任何代码?

谢谢!

3 个答案:

答案 0 :(得分:1)

  1. 启用Kinect区域:

    • 将“Microsoft.Kinect.Toolkit.Controls”项目导入您的解决方案。 (使用添加 - > 现有项目
    • 将“Microsoft.Kinect.Toolkit.Controls”的引用添加到您的项目中。
    • 使用以下代码将KinectRegion添加到您的XAML中:

      enter image description here

    • 在xaml.cs文件中导入/使用“Microsoft.Kinect.Toolkit.Controls”:

    使用Microsoft.Kinect.Toolkit;

    • 将传感器选择器的电流传感器绑定到KinectRegion:

    var regionSensorBinding = new Binding(“Kinect”){Source = this.sensorChooser}; BindingOperations.SetBinding(this.kinectRegion,KinectRegion.KinectSensorProperty,
    regionSensorBinding);

  2. 我不明白你对“缩放”的意思。请提供更多详细信息。

  3. 要检测手握和手动释放,可以在KinectRegion中添加“AddHandPointerGripHandler”和“AddHandPointerGripReleaseHandler”。请查看KinectScrollViewer.cs。
  4. 您可以从“Kinect Developer Toolkit Browser App”中探索有关手形指针和内容的代码。

答案 1 :(得分:0)

据我所知,KinectRegion可以同时使用,并自动检测哪一个是主要的。 握把和释放检测在KinectScrollViewer控件上也是自动的。 关于缩放我不知道。

您可以在this link

上找到有关Kinect SDK 1.7交互功能的精彩教程

答案 2 :(得分:0)

绝对优秀的课程在以下链接中:

first part显示了Kinect SDK的基础

第二部分类似于第一部分,但使用MS Blend

the third part是交互流教程,您可以在其中获取双手信息。

但是如果你想在Kinect地区使用这两只手,你必须编辑Microsoft.Kinect.Toolkit.Controls - > KinectRegion.cs - >第1000行(MSDN Blog question中的更多信息)

对我有帮助! (我有同样的问题)!

对于Grip检测,可在 kinectRegion - >中找到。 kinectRegion.HandPointers [手的idex(0是左,1是右)]。IsInGripInteraction - 它是bool - 我添加了一些代码:

private Skeleton []skeleton;

private void kinect_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
        {

            using (SkeletonFrame sf = e.OpenSkeletonFrame())
            {
                if (sf != null && this.skeleton != null) // check that a frame is available
                {
                    sf.CopySkeletonDataTo(this.skeleton); // get the skeletal information in this frame

                }
            }

        }

sensor.SkeletonFrameReady += new EventHandler<SkeletonFrameReadyEventArgs>(kinect_SkeletonFrameReady);

foreach (var sk in skeleton)
        {
          if (sk.TrackingId == 0) continue;
          else
          {
             if (kinectRegion.HandPointers[0].IsInGripInteraction == true)
             {
                .......
             }
          }
        }
相关问题