Kinect向上/向下滑动手势

时间:2012-08-29 12:27:45

标签: kinect kinect.toolbox

我已经使用了 SwipeGestureRecognizer ,它只向左滑动并向右滑动手势识别,但我想向两只手向上/向下滑动如何操作..

任何想法......

SwipeGestureRecognizer 是一个dll,因此我无法看到滑动识别器的逻辑。

  public event EventHandler<KinectGestureEventArgs> SwipeLeftDetected;
  public event EventHandler<KinectGestureEventArgs> SwipeRightDetected;

任何人都可以拥有 SwipeGestureRecognizer 逻辑的代码 这样我就可以理解并尝试实现刷卡了。

提前致谢!

4 个答案:

答案 0 :(得分:2)

我在黑暗中拍摄了一些镜头,但是如果您指的是Kinect工具箱,则会设置Codeplex project。具体来说,您应该看看SwipeGestureDetector.cs

实际上,查看您的描述和Codeplex上的代码,您可能没有使用Kinect工具箱,但这可能是开始的好时机。此外,将向上/向下滑动识别添加到链接的.cs文件应该相对简单。

答案 1 :(得分:2)

在这里查看http://blog.exceptontuesdays.com/post/27989563563/gestures-with-microsoft-kinect-for-windows-sdk-v1-5

它没有UP / DOWN手势,但无论如何它还有很多其他手势。

Source code is available there as well.

 switch (e.GestureType)
            {
                case GestureType.Menu:
                    Debug.WriteLine("Menu");
                    Gesture = "Menu";
                    break;
                case GestureType.WaveRight:
                    Debug.WriteLine("Wave Right");
                    Gesture = "Wave Right";
                    break;
                case GestureType.WaveLeft:
                    Debug.WriteLine("Wave Left");
                    Gesture = "Wave Left";
                    break;
                case GestureType.JoinedHands:
                    Debug.WriteLine("Joined Hands");
                    Gesture = "Joined Hands";
                    break;
                case GestureType.SwipeLeft:
                    Debug.WriteLine("Swipe Left");
                    Gesture = "Swipe Left";
                    break;
                case GestureType.SwipeRight:
                    Debug.WriteLine("Swipe Right");
                    Gesture = "Swipe Right";
                    break;
                case GestureType.ZoomIn:
                    Debug.WriteLine("Zoom In");
                    Gesture = "Zoom In";
                    break;
                case GestureType.ZoomOut:
                    Debug.WriteLine("Zoom Out");
                    Gesture = "Zoom Out";
                    break;

                default:
                    break;

答案 2 :(得分:1)

我认为你正在使用kinect.toolbox。由于@Coeffect将您转到源代码的链接,您可以访问源代码并根据需要进行更改。 here是一个非常有用的资源,展示了如何使用kinect.toolbox以及如何为其添加新手势。您可以非常类似地添加向上滑动手势。我想你可以在SwipeGestureDetector.cs

中添加这样的内容
LookforGesture()
{

     // from down to up
     if (ScanPositions ((P1, P2) => Math.Abs ??(p2.X - p1.X) <0.20f, 
       (P1, P2) => p2.Y - p1.Y <0.01f, (P1, P2) => 
       Math.Abs ??(p2.Y - p1.Y)> 0.2f, 250, 2500))
     {
         RaiseGestureDetected ("SwipeUp");
         return;
     }
     ...
 }

答案 3 :(得分:0)

滑动是非常容易识别的手势。使用简单的数学。你需要将手势“剪切”为3个阶段。开始,中间和结束

如果你想识别从上到下的滑动,你的开始手势就是你的手在头顶上方的某个位置。比如你头上10厘米。所以在每一帧中你都会检查你的手是否高出你的手10厘米。如果是,你需要检查它是否会进入中间位置。我会在这里使用肩膀的高度。我也会实现方式标记所以导致IMO这种姿势应该是直线的。如果你的手从头到肩直线上去,你需要检查才能到达终点位置。我会在胸部以下的某处使用身高。这样使用简单的数学运算,只需在每个框架中检查手的位置,就可以实现自己的滑动识别