使用微软Kinect进行手势识别操作的一个简单范例(2)(WPF-C#)

在我上一篇博客中:http://blog.youkuaiyun.com/soft2buy/article/details/6589326

介绍了一个用微软的Kinect Sensor 捕捉双手动作的简单例子。今天我给大家介绍用Kinect来进行操作者手势的识别。

看完本篇文章,你可以使用C#(WPF)程序来判断操作者左右手的几个手势:

1.从左 到右挥动

2.从右到左挥动

3.从后到前(按下动作)

4.从前到后(按下后离开)

要正确运行本文的程序,你需要下载和安装:

1.Kinect for Windows SDK
http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/download.aspx

2.Microsoft XNA Game Studio 4.0
http://www.microsoft.com/download/en/details.aspx?id=23714

因为我们要利用XNA来计算双手的X,Y,Z坐标。

3.微软最新版的Kinect Toolkit :
http://kinecttoolkit.codeplex.com/

微软最新版的Kinect Toolkit 还有很多其他的动作,比如 SwipeToLeft(左下摆),SwipeToRight(右下摆),LeftHello(左手挥手),RightHello(右手挥手)动作,大家有兴趣可以自己好好研究,本篇文章不做解释。

唯一不足的是,没有LeftToRight(左到右挥手)和RightToLeft(右到左挥手),FrontToBack(按下动作),BackToFront(离开动作),我们知道这4个动作是非常有用的。前两个可以用在界面图片或文章的上下翻页,而后两个可以用来选择所需要的图片或者文章。

所以我在微软的Kinect Toolkit里添加了这两个动作的支持,代码如下:

大家可以在Gestures/SwipeGestureDetector.cs

内添加:

void LookForGesture()
        {
            // 左到右
            if (ScanPositions((p1, p2) => Math.Abs(p2.Y - p1.Y) < 0.20f, (p1, p2) => p2.X - p1.X > - 0.01f , (p1, p2) => Math.Abs(p2.X - p1.X) > 0.2f, 250, 2500))
            {
                RaiseGestureDetected(“LeftToRight”);
                return;
            }

            // 右到左
            if (ScanPositions((p1, p2) => Math.Abs(p2.Y - p1.Y) < 0.20f, (p1, p2) => p2.X - p1.X < 0.01f, (p1, p2) => Math.Abs(p2.X - p1.X) > 0.2f, 250, 2500))
            {
                RaiseGestureDetected(“RightToLeft”);
        

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值