首先,我们需要先了解一下找字识字的原理,先分析一下找字,找字和找图从原理上是一致的,是一个二维数组颜色的对比,他们的区别在于:找图是全图对比,而找字则是只对字形的区域对比(当然可能算法上有差异,但是原理上是差不多的),因此,找图到找字就相当于从图变成一个储存字形特征的字符串,再来分析一下识字,识字就是在一个自定义区域中去寻找到与我们在字库中储存的字形特征相同或者相似的字符串,然后对比后返回字库中特征字符串对应的字(字形特征对应的字是由我们定义,我们可以把“你”这个字的特征定义成“我”这个字也是没问题的),可能你很轻松的使用多点找色或者比色识别出字,但是要识别多个就需要自己做多个字的识别以及字符串拼接,这是有点麻烦的(比如0-9的识别很轻松,但是一个多位数的比如1234,很可能只识别出1),而识字功能的强大的地方在于可以返回区域内数并按顺序拼接成完整字符串,省去了很多麻烦。
了解了原理之后,我们来试着做一个字库试试,恩,就制作一个识别按键精灵四个字的字库吧,打开安卓设备,找到类似下图的位置:
连接上PC助手之后,打开抓抓工具并截图:
选择范围选取,将按键精灵四个字框选起来,我们发现,这区域中,白色的是字,背景颜色的干扰不多,所以不需要去除干扰点(如果字的附近有和字体一样颜色的干扰,我们可以选择橡皮擦工具去除,或者调整选择区域将干扰的地方去掉)
我们打开放大镜,并将鼠标移动至“按键精灵”4个字上,观察放大镜上内容,大致有两种颜色:白色以及边缘的灰色,我们取这两个颜色设置一定的偏色并勾选(偏色为:101010,纯属个人习惯):
选取了之后我们选择右上角的字库制作,并点击提取单个点阵(多个点阵适合数字,汉字的话不适合):
在提取点阵按钮下方的框中会出现一条选项(长长的字符串),我们点击此选项:
我们将他定义为按键精灵四个字并按下回车加入字库,会发现字符串前填加了我们定义的字:
这样,一个识别按键精灵的字库就完成了(四个字必须同时出现才能识别到,如果要做单个字的,可以更改选取范围,一个字一个字进行制作,这样就能单独识别,这里不再进行),我们可以直接打开字库文件的目录将文件移动至我们使用时的位置或者放到附件里(推荐放到附件),接下来要做的就是去使用他了,我们在上图中已经看到了识别结果上显示了按键精灵,这说明识字可用,但是我还是要在代码中去确认!找字和识字的命令不会写?没关系,我们可以使用抓抓帮忙写(上图的Ocr脚本为识字,FindStr脚本为找字,点一下就好了~):
- //设置字库,编号为1
- SetDict 1, “Attachment:test.txt”
- //使用编号为1的字库(和上面的SetDict配套使用)
- UseDict 1
- //找字(寻找到这四个字在屏幕中的位置坐标,前4个参数代表范围,可以自定)
- Dim intX,intY
- FindStr(54,577,170,622,”按键精灵”,”FFFFFF-101010|CBC9C6-101010″,1.0,intX,intY)
- If intX > -1 And intX > -1 Then
- TracePrint “按键精灵4个字的坐标是:”&intX&”,”&intY
- End If
- //识字(在设定的范围中识别字库中定义好的字,字体颜色为勾选的颜色)
- TracePrint Ocr(54,577,170,622,”FFFFFF-101010|CBC9C6-101010″,1.0)
复制代码
我们运行一下看看效果:
等级识别,战斗力识别,我来了!
本站所有文章,如无特殊说明或标注,均为本站原创发布。
任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)