我已经使用了 SwipeGestureRecognizer ,它只向左滑动并向右滑动手势识别,但我想向两只手向上/向下滑动如何操作..
任何想法......
SwipeGestureRecognizer 是一个dll,因此我无法看到滑动识别器的逻辑。
public event EventHandler<KinectGestureEventArgs> SwipeLeftDetected;
public event EventHandler<KinectGestureEventArgs> SwipeRightDetected;
任何人都可以拥有 SwipeGestureRecognizer 逻辑的代码 这样我就可以理解并尝试实现刷卡了。
提前致谢!
答案 0 :(得分:2)
我在黑暗中拍摄了一些镜头,但是如果您指的是Kinect工具箱,则会设置Codeplex project。具体来说,您应该看看SwipeGestureDetector.cs。
实际上,查看您的描述和Codeplex上的代码,您可能没有使用Kinect工具箱,但这可能是开始的好时机。此外,将向上/向下滑动识别添加到链接的.cs文件应该相对简单。
答案 1 :(得分:2)
它没有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这种姿势应该是直线的。如果你的手从头到肩直线上去,你需要检查才能到达终点位置。我会在胸部以下的某处使用身高。这样使用简单的数学运算,只需在每个框架中检查手的位置,就可以实现自己的滑动识别