一个很糙的字母手势识别方案

最近需要一个字母手势识别功能,字母 C 的识别,因为 C 简单又饱满。可是在网上也没找到什么特别好的库,倒是看了不少关于GestureDetector的介绍,单击双击滑动滚动,上上下下、左左右右、BABA的。

不过还是不知道怎么识别字母手势哈,可能最近脑子不灵光了。脑子不灵光,挖坟还是挺在行的 -- 给我挖到一个「2008」年歪果仁写的不是那么精准的方案,整理并分享之。

远古的气息~

咱们继续。

总结了下这个「糙」方案的整体思想,很简单:先存储后识别。这个思路留意下,后面文章会再提到。

存储- 预先准备工作:

1、预先将用户手势分为4个方向,上(U)下(D)左(L)右(R),并实现上下左右监听的功能。

2、“一次按下 + 中间滑动 + 一次抬起“ = 一次手势 = 一次识别。抬起时会有「手势结束」事件,并返回此次形成的手势字符串。

3、收集数据:基于1,2,一笔划写出一个字母,然后记录其手势字符串,比如"C"就是“LDR”。并以HashMap键值对的方式存储使用:mLetters.put("LDR", "C")。

识别- 正式使用:你想要C,那就将返回的手势字符串和事先存储在 HashMap中的键值对作遍历对比。

经过试验,C的识别率挺高的。这也满足了我的需求。同时,I、J、L、N

M、W、O等正常顺序一笔完成的也很高。

至于其他字母,由于有的大写字母实在一笔划都无法完成,比如A,B等,原贴作者MrSnowflake对此类用了小写的方式识别。但这也失去了「字母手势识别」的意义。故此不推荐。

但是,这份代码里,可以学习的有两点:

1、方便的上下左右手势判断,已经集成到一个手势类 SnowGesture 中。简单集成即可实现上下左右的手势监听。

2、简单识别思路:事先存储然后对比识别。即使目前 4 个方向、一个笔画的实现很糙,那如果是 8 个方向并且可以多笔画呢?这个方向是正确的,之后更精准的方案,本质也是这个思路。另一个我能想到的完全不同的思路是:OCR识别。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180619G19JDH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券