1

我使用了SwipeGestureRecognizer,它只有向左滑动和向右滑动手势识别,但我想向上/向下滑动双手如何做到这一点..

任何想法......

SwipeGestureRecognizer是一个 dll,所以我看不到滑动识别器的逻辑。

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

任何人都可以拥有SwipeGestureRecognizer逻辑的代码,以便我可以理解并尝试实现向上滑动。

提前致谢!

4

4 回答 4

2

我在这里摸索了一下,但如果您指的是 Kinect 工具箱,这里有一个为它设置的Codeplex 项目。具体来说,您应该查看SwipeGestureDetector.cs

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

于 2012-08-31T03:40:18.133 回答
2

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

它没有向上/向下手势,但无论如何它还有很多其他手势。

那里也提供源代码。

 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;
于 2012-10-09T11:56:50.243 回答
1

我认为您正在使用 kinect.toolbox。正如@Coeffect 向您推荐源代码的链接,您可以访问源代码并根据需要进行更改。是一个非常有用的资源,展示了如何使用 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;
     }
     ...
 }
于 2012-10-05T13:53:56.943 回答
0

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

如果你想识别从上到下的滑动,你的开始手势是当你的手在头顶的某个地方时。例如头顶上方 10 厘米。因此,在每一帧中,您都会检查您的手是否在您的手上方 10 厘米。如果是,您需要检查它是否会到达中间位置。我会在这里用手放在肩膀的高度上。我也会实现方式标记,因此 IMO 这种手势应该是直线进行的。如果你的手从头顶到肩膀直线移动,你需要检查是否会到达终点。我会在胸部以下某处使用高度。这样,使用简单的数学运算,只需检查您手在每一帧中的位置,您就可以实现自己的滑动识别

于 2012-09-03T10:41:29.153 回答