其实鼠标手势识别在实际中好像并没有太多应用场景,比较常见的就是浏览器的手势操作,不过感觉这个也比较鸡肋,如果和硬件结合起来会好一些。我是由于一个小项目的需要,所以动手做鼠标手势识别这个东西,本来想在网上找一下看有没有相关文章,奈何很多根本都看不懂。。所以我就自己构思要如何实现,后来我就想到了一种比较简单的方法,经过测试,识别率是挺高的,应该可以>90%。
先上个图:
从实际效果来看,识别率挺不错的。接下来说说我实现的思路。
一、要知道鼠标手势,那就要知道移动的方向,那么我们可以用一个数组来保存鼠标每次移动的方向,如前次坐标(3,5),此次坐标(5,4),则将结果(大于为1,小于为-1,等于与0)记为(1,-1),这时我们便知道鼠标是向右下方滑动的。
二、接着将这些方向与标准的手势进行比较,若方向与上次相同则忽略,比较得出匹配的轨迹种类之后,我们还不能确定就是此轨迹,因为我们只确定了方向,所以此时我们还要将绘制出的轨迹图像与标准轨迹图片进行对比,若相似度大于阈值,则匹配成功。
三、因为用户在移动鼠标的过程中,肯定不可能完全是标准轨迹的样子,所以要设置一个误差范围,在此范围内可认为前后坐标相同。这个误差范围是根据用户绘制的轨迹图像的大小来动态确定的,图像越大,误差范围越大,最高不超过20。然后用户在绘制的过程中,可能出现手抖,可能会导致出现一个与标准轨迹不同的方向,这时我们就要设置一个容错次数,在这个次数内的错误的方向均不计,若超过了,则跳到识别下一个轨迹。
明白了以上三点,那么来写代码也就不难了。那么要怎么做呢?请继续看:
一、保存标准轨迹的配置文件
{ "track":[
{"tr