Kinect上下滑动手势



我使用了SwipeGestureRecognizer,它只能向左和向右滑动手势识别,但我想向上/向下滑动双手。。

任何想法。。。。。。

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

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

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

提前感谢!

我在这里是在黑暗中拍摄的,但如果你指的是Kinect工具箱,那么有一个Codeplex项目是为它设置的。具体来说,你应该看看SwipeGestureDetector.cs。

事实上,看看你的描述和Codeplex上的代码,你可能没有使用Kinect工具箱,但这可能是一个很好的开始时间。此外,在链接的.cs文件中添加向上/向下滑动识别应该相对简单。

看看这里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;

我认为您正在使用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;
     }
     ...
 }

滑动是非常容易识别的手势。使用简单的数学。你需要将手势"切割"成三个阶段。开始、中间和结束

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

相关内容

  • 没有找到相关文章

最新更新