网上有不少用手势控制鼠标移动进行简单操作的视频
于是我也做了一个
实现方法简述:
1、肤色检测找到手势区域,(加上kalman滤波等会提高准确度,但也会影响实时性),
2、判断手势,只有两种,掌(只要有分叉就行),拳(没有分叉,所以把五指并拢就成)。
我识别这两种手势用的是很简单的策略:在手势区域取几条等间距的水平线,扫描之,如果黑白相间,则为掌,反之为拳。当然中间还有一些技巧的实施以提高鲁棒性。也可以用麻烦些的模板匹配,或凸性检测(见多指尖检测)等方法,但个人不提倡
3、确定鼠标在屏幕中的位置。这里有两种策略:第一种方法是直接把手势中心在图像上的位置按比例映射到屏幕,缺点是使得鼠标出现跳动,影响用户体验,加上滤波后会好很多。第一次写的时候用的就是这种方法,但效果不好,于是想了下面的方法。
如果把第一种方法叫做绝对位置确定法,第二种则是相对位置法。 大家知道,在某些笔记本的键盘中间有一个特殊的键,向不同的方向推得时候,鼠标会向相应方向移动。本程序本质上跟这个键是一样的。我定义了中心区域,在这里,鼠标静止,当手势出现在有效区域时,就会使鼠标移动,而且手势中心点距离图像中心越远,移动速度越快。当然,如果手离开了屏幕,鼠标也会静止。
效果还不好,因为没加滤波。后期会进行滤波
视频演示:http://v.youku.com/v_show/id_XMjM0NzQ3OTg4.html
代码下载:http://download.csdn.net/source/2957260
另有相关一文: 基于动态手势识别的酷狗音乐播放器控制
视频截图: