Kinect for Windows手势识别

时间:2012-03-19 16:31:14

标签: c# wpf kinect gesture-recognition

我一直在查看Kinect for Windows发行说明和功能,因为我想在我的项目中加入手势识别。

在上面的页面中,第一行提到“Kinect for Windows SDK使开发人员能够创建支持手势和语音识别的应用程序”。语音识别API随SDK一起提供,可以随时使用。但是,我认为SDK中没有可用的手势识别API。 Skeleton Tracking的API可以很容易地使用,但是必须进行定制才能获得手势识别。

我已经看过Windows Media Center的视频由手势等和其他应用程序控制。我想知道所有这些应用程序是否都是自定义构建的,并且必须编写自己的手势识别代码。

目前,在我的项目中,我使用的是Codeplex中的Kinect DTW Gesture Recognition。我有两个问题 - > 1)看起来非常有性能,并且通过我的应用启用此功能,我的应用程序在一段时间后抛出OutofMemory异常(PC规格相当高)。 2)不能说系统的健壮性。有时为某些人而不是为他人工作。

我认为如果API已经内置,那么切换到这些就好了。这些是可用的还是分辨率是什么?

4 个答案:

答案 0 :(得分:9)

我现在正在为学校项目做这件事。我们必须创建自己的手势识别模块。 API中没有任何内容可以帮助您,但它为您提供了构建功能所需的所有部分。

这篇文章是一个很大的帮助,http://blogs.msdn.com/b/mcsuksoldev/archive/2011/08/08/writing-a-gesture-service-with-the-kinect-for-windows-sdk.aspx。它讨论了如何分解手势。如果你只有一些手势,你可以硬编码,这是微不足道的。我们需要能够加载并识别用户定义的手势,但本文描述了我们用于实现目标的基本框架。

答案 1 :(得分:6)

在这里查看http://www.exceptontuesdays.com/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;

答案 2 :(得分:0)

我也正在开发一个带有手势识别的应用程序作为大学的作业。在寻找好的书籍后,我偶然发现了这两者,两者都是由微软研究人员撰写的:

(1)http://www.amazon.de/Programming-Kinect-Windows-Software-Development/dp/0735666814
(2)http://www.amazon.de/Kinect-Windows-SDK-Programming-Guide/dp/1849692386/ref=sr_1_10?s=books-intl-de&ie=UTF8&qid=1393944100&sr=1-10&keywords=kinect

他们描述了一般技巧,以便使用Kinect进行手势识别。

答案 3 :(得分:0)

试试这个FAAST API。 它是一个API,可以识别身体的手势并给出相应的输入中断。 在这里,您需要为特定操作分配特定键。 例如:假设我使用'W'键进行向前移动,然后我可以使用此API为特定手势指定此键。