效果
原理介绍
指尖识别基础
程序的核心在于指尖识别,我发现网上关于指尖识别的资料不多,所以自己想了个很简单的办法,不过效果还不错。首先应该知道三点:
1. Kinect可以分辨出画面中哪一部分是人体
2. Kinect带有深度摄像头,可以获取物体到摄像头的距离
3. Kinect可以获取到人体的最多25个关节点的位置
减小搜索空间
为了寻找指尖,没有必要在整副画面中去搜索,那样会导致效率非常低。指尖肯定是在手部关节点(Hand)附近的,因此只需要获取到手部关节点的位置然后再拓展出一片区域,在这片区域里进行搜索就行了。之所以取Hand而不是取HandTip,是因为后者的稳定性非常差,即使在一个合适的距离正对Kinect也不一定能识别出来。
指尖识别
这时候就可以根据指尖的特征来进行指尖识别了。不过实际上我识别出的不是指尖,而是指尖上方的一点。此点的特征如下:
不属于人体
或者属于人体,但是和手部关节点不在同一个平面上(允许有误差)
到手部关节点的位置在某个合适的范围内
下面连续N(这里我取N为5)个像素都属于人体
首先,对于第一点很好理解,因为上面说了识别的不是指尖,而是指尖上方的一点。
第二点是用来处理手移动到身边正前方的时候的情况,比如手在胸前,这时候指尖上方的点都是属于人体的,不满足第一点。这里的误差指的是手和小臂成90度时的深度差,一般15cm左右。
第三点是为了消除两根手指根部之间的那个位置形成的误判,同时也进一步减小了搜索空间,正常情况下手指到手腕的距离都在10~25cm范围内,这里把拇指筛掉了,一般也不会用拇指去 *** 作。如果要恢复拇指的话调整下参数就可以。
第四个条件筛选出了离手指尖最近的那个点。
确定 *** 作窗口
为了便于 *** 作和观察,我设置了一个 *** 作窗口,位于肩部的左上方和右上方,根据 *** 作手的左右而调整。这个窗口就代表着电脑的屏幕,手指在窗口里的位置就是鼠标在电脑屏幕上的位置。这里窗口的大小是根据关节点Head到Neck的距离作为单位长度算出来的,也就是说能根据人体到Kinect的距离来调整 *** 作窗口的大小。同时这个窗口是实时更新的,会根据人体的位置而进行调整。
这里要说一下,如果 *** 作的位置相对固定,那么建议识别出窗口后就不要再更新,将 *** 作窗口固定,因为这样能够大幅度提高鼠标的稳定性,同时上传了一份以这种方式来做的代码,不过这份代码只实现了单手控制。
抖动消除
这是个不太好处理的问题,因为容易影响到正常 *** 作。这里我设置了一个移动的阈值,如果和上一个位置相比,鼠标的位置改变很微小,那么就保持上次的位置不变。还可以再加入一个判断位置突变的阈值,如果当前位置和上一次位置相距太远,就可以判断为非法而筛去。
指尖位置与鼠标位置的转换
黑色框为程序里确定的 *** 作窗口,大写的X和Y代表的是屏幕的宽和高,红色框为电脑屏幕,假设人的手指在的位置,如果想将鼠标也映射到同样的位置,那么就有 的等比关系成立。电脑屏幕的宽和高,实际上是不需要考虑分辨率的,因为在鼠标的坐标系下,电脑的宽和高都被分成了65535个单位,所以宽和高可以视为65535。根据这些,就可以算出的值来。
CPU占用率高的几种原因1、系统感染病毒或恶意代码
通常病毒和木马程序会占用 CPU 很多资源,如果你的机器感染了病毒或木马程序,CPU 甚至瞬间会被占用 100%。对于这种情况,建议大家用杀病毒软件清理病毒和木马程序,如果杀毒软件不能清除病毒,大家只能重装系统了。
2、IE浏览器插件或网页代码运行错误
打开过多的flash网页、网络电视页面会占用大量 CPU 资源,如果打开的页面有错误代码,也可能直接导致IE浏览器崩溃,出现CPU 100%运行,甚至死机。建议大家尽量关闭已经不再使用的网页,不要同时打开太多flash网页;如果IE浏览器崩溃,重新启动IE就可以了。
3、错误 *** 作导致的应用软件崩溃
在我们平时使用迅雷、BT、office、大型的绘图软件、视频播放器 *** 作不当会使应用软件崩溃,比如:下载软件和防火墙冲突、用office打开错误的文件、用视频播放已损坏的视频文件等等。这些情况都会使应用软件崩溃,CPU被占用100%。即使我们在桌面已经关掉应用程序时候,电脑还是很慢,CPU还是被占用100%。这个时候我们可以打开“任务管理器”找到占用CPU 100%的那个进程,然后结束这个进程就可以了。
4、杀毒和防火墙软件
部分杀毒和防火墙软件由于其实时监控的特性,导致高度占用 CPU 资源。其实你可以仔细观察,它们还占用了更多的内存资源。我不建议停止甚至删除它们,但是最好计划好让它们工作的时间,尽量减少它们占用 CPU 的时间。另外,尽量选择使用那些占用 CPU 和 内存少的杀毒和防火墙软件。
5、不正当驱动程序
安装了不正当的硬件驱动程序,也是导致高度占用 CPU 资源的可能之一。建议尽量安装通过微软认证的驱动程序,或者安装笔记本官方提供的驱动程序。
先安装kinect sdk 1.5,然后看文档,英文不行就上网找教程吧 ,软件环境,vs2010,framework 4.0,windows 7,这是必须要满足的,然后新建个工程,引入kinect,在,NET选项卡了欢迎分享,转载请注明来源:内存溢出
评论列表(0条)