马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 脚本小学弟 于 2019-8-22 12:03 编辑
利用安卓版的ocr识别做了一个小程序
在挂机过程中识别次数是否到指定次数,但是由于挂机过程中,游戏会有转场动画
当转场时,识别区域的数字就会消失,此事ocr就无法获取到识别内容,就会将识别的内容赋值为null
当null时,程序会直接报错,并终止
这里设定了一个强制转换的,如果识别为null,则将其强制赋值为0,但是这个强制赋值好像不成功。
不知道这样写是否正确!
代码如下:
[按键精灵] 纯文本查看 复制代码 SetDictEx(0, "Attachment:剧情副本次数数字.txt")
UseDict(0)
Dim x //定义x为识别的数字
Do
x = Ocr(381, 353, 452, 386, "FFFFFF-505050", 1) //在指定区域识别数字赋值给x
If x = null Then //判断x是否成功识别,如果识别未成功,则将其赋值为0
TracePrint "x为空值"
x = 0
TracePrint x
Else
TracePrint "识别成功" //如果识别成功,将其转换成int类型,参与下方的do循环
x=int(x)
End If
TracePrint "当前战斗次数为:",x
If x > 10 Then
Exit Do
End If
Delay 4000
Loop
我弄了一个折中的办法,不过还是有异常报错。
ocr识别是在特定的页面才会执行
[按键精灵] 纯文本查看 复制代码 do
If 在特定页面 Then
执行OCR操作
If OCR结果>10 Then
执行退出副本操作
End If
Exit Do
End If
delay 4000
loop
这里的延迟时间会影响到识别错误的问题,如果时间过快,ocr识别就会识别到null,这个程序就直接报错。
|