[手机按键备忘]关于找动态图的常见处理手段和特殊应对

常见的动态图情况

1.我们要找的它可能在一定范围内移动

2.还可能周围有一定的色彩变化和其他颜色或者形态变化干扰

3 有的虽然肉眼看不出变化 但是移动了一定距离  原来的找图就无法再找到了。随着上下或者左右位置变化产生了一些渐变 但是肉眼难以发觉

常见应对

1.应对原理:移动变化 闪光和其他干扰 导致图片发生了各种变化 但是总有不会变化固定的地方 我们可以以这部分不变动的区域为基础做图色来进行找图

2.常见的处理手段 一个是做透明图,我们可以把变动的区域当作背景给处理  不动的区域为图片区域

3.另外一个是 多点找色,我们取点只需要取那些固定不变的区域的点即可 变化的都不取点,如果找的图位置固定 甚至可以考虑多点比色 取点和多点找色规则一样

特殊应对

有的时候需要找图可能不断的移动而且自身颜色形态不断变动没有多少不变的区域 要稳定的识别找到该图 只能用最粗暴的办法来实现

0.随便拿个gif图做例子 这个图基本上找不到一个可以固定不变的区域 同时还闪瞎狗眼

1.原理

无论怎么变化的图 他总归有一定的变化上限 不太可能出现一个按钮有上千种变化  游戏开发者不会把资源浪费到这种琐事上,我们把上面的gif图分解来看结果如下

可以看出整个动态图是由10个静态图构成的 ,就是说 我们如果能找到这10张静态图中的一张 那么我们就可以找到这个动态图

2 做法

按键抓抓来抓取动态图对应的静态图

截图结果:(这些截图有点粗 正常应该考虑四个角落透明图的情况)

配合手机按键找图函数一次可以找多个图片的特点

Dim intX,intY
//完整的找闪瞎狗眼图的找图函数
FindPic 4,522,532,953,"Attachment:timgQ4Y57IG3_1.png|Attachment:timgQ4Y57IG3_2.png|Attachment:timgQ4Y57IG3_3.png|Attachment:timgQ4Y57IG3_4.png|Attachment:timgQ4Y57IG3_5.png|Attachment:timgQ4Y57IG3_6.png|Attachment:timgQ4Y57IG3_7.png|Attachment:timgQ4Y57IG3_8.png|Attachment:timgQ4Y57IG3_9.png|Attachment:timgQ4Y57IG3_10.png","000000",0,0.8,intX,intY
If intX > -1 And intY > -1 Then
    TracePrint intX
    TracePrint intY
End If

注意:findpic函数一次能容纳的图片数量是有上限的 如果超出上限个 好像就会莫名其妙报错

一般性的找图要求 上面的这些做法基本上可以保证找到的准确度 ,但是如果要保证100%的识别 还是有一定的误差的 因为我们用按键抓抓点击一次瞬间抓10个图 也未必能保证把目标图的所有变化都抓尽如果能保证目标图可以稳定的存在一定的时间  那么我们用循环找图的的方式来查找那些我们当前找图错过的图片变化

Randomize
Dim intX,intY,当前随机数
//下面左右是找到目标图就输出找到的坐标 找不到就把当前界面截图存储下来 注意循环间隔时间不能太短 容易造成短时间内找不到图后频繁截图导致的系统资源不足
Do
    当前随机数=Int(((500-300+1) * Rnd()) + 1)
    FindPic 4,522,532,953,"Attachment:timgQ4Y57IG3_1.png|Attachment:timgQ4Y57IG3_2.png|Attachment:timgQ4Y57IG3_3.png|Attachment:timgQ4Y57IG3_4.png|Attachment:timgQ4Y57IG3_5.png|Attachment:timgQ4Y57IG3_6.png|Attachment:timgQ4Y57IG3_7.png|Attachment:timgQ4Y57IG3_8.png|Attachment:timgQ4Y57IG3_9.png|Attachment:timgQ4Y57IG3_10.png|Attachment:timgQ4Y57IG3_11.png|Attachment:timgQ4Y57IG3_12.png|Attachment:timgQ4Y57IG3_13.png|Attachment:timgQ4Y57IG3_14.png|Attachment:timgQ4Y57IG3_15.png|Attachment:timgQ4Y57IG3_16.png|Attachment:timgQ4Y57IG3_17.png|Attachment:timgQ4Y57IG3_18.png|Attachment:timgQ4Y57IG3_19.png|Attachment:timgQ4Y57IG3_20.png|Attachment:timgQ4Y57IG3_21.png|Attachment:timgQ4Y57IG3_22.png|Attachment:timgQ4Y57IG3_23.png|Attachment:timgQ4Y57IG3_24.png","000000",0,0.8,intX,intY
    If intX > -1 And intY > -1 Then
        //找到了图就输出下坐标
        TracePrint intX
        TracePrint intY
    Else
        //找不到目标图就把当前界面截图下来存储 等待脚本结束后做新的截图
        SnapShot GetSdcardDir()&"/"&cstr(time())&"_"&cstr(当前随机数)&".png"//把截图存放到sdcard目录下 起名为当前时间戳加上300-500的随机数命名图片

    End If

    Delay 当前随机数  //产生300-500的随机数 间隔时间随机 随机范围是300毫秒-500毫秒
Loop

123

原文地址:https://www.cnblogs.com/zjl8455482/p/10900197.html

时间: 2024-08-01 13:25:06

[手机按键备忘]关于找动态图的常见处理手段和特殊应对的相关文章

[手机按键备忘]常见的脚本结构思路的补充(强化了错误代码的处理部分个人向)

思路代码(还是以前的旧代码 并且只是思路代码 无法直接使用) //例子:遍历读取账号文件内容 并且具备记忆功能 自动从上次的位置开始 不是粗暴的执行一个删除一个账号的处理 而是把记忆写到脚本配置里面 //1.读取账号文件内容 //2.对账号文件做基础的判断和处理 文件是否存在 内容是否对 是否去掉了可能的Bom头和乱码 去掉空行等等 这里粗略的写一写 //3.获取账号文件内容转化为数组 账号文件内容数组 = file.ReadLines(账号文件路径) //4.读取脚本本身的配置 看看是否记录了

.net MVC内置js验证 jquery.validate.unobtrusive.js重置验证操作(备忘,找了很多次了)

1 (function ($) { 2 $.validator.unobtrusive.parseDynamicContent = function (selector) { 3 //use the normal unobstrusive.parse method 4 //$.validator.unobtrusive.parse(selector); changed this line with 5 6 $(selector).find('*[data-val = true]').each(f

原来找字也可以这样用ElseIf FindStr 手机按键精灵 跟大漠的区别

原来找字也可以这样用ElseIf FindStr(646, 1109, 776, 1261, "公告小叉", "FFFFFF-333333", 0.9, intX, intY) > 100 or intx > 0 Then         Tap intX+10, intY+10         Delay 1000 跟大漠的有什么区别?大神答:色值大漠是bgr数据模式   而手机按键精灵是rbg要转换的 大漠常用语句大全API http://xx51.

linux下常用命令备忘

转自:Linux 命令集锦 linux下查看监听端口对应的进程 # lsof -i:9000 # lsof -Pnl +M -i4 如果退格键变成了:"^h". 终端连接unix删除退格键,按住CTL键同时按delete Linux搜索 # find / -name "xxx.conf" 查看linux是32位还是64位的命令 #file /sbin/init #getconf LONG_BIT #getconf -a 在Linux和Windows下都可以用nslo

Objective-C教程备忘单

终极版本的Objective-C教程备忘单帮助你进行iOS开发. 想开始创建你的第一个iOS应用程序么?那么看一下这篇很棒的教程吧:Create your first iOS 7 Hello World Application 注:这篇文章我写了三天,可能在一些必要的地方使用了编辑和说明,所以如果有任何疑问和修改建议请在下方评论. 这不是一个初学者指南,也不是关于Objective-C的详细讨论,这是关于常见的和高水平的论题的快速索引. 如果这里有些问题没有涉及到,你也可以查阅以下文章: Obj

ffplay for mfc 代码备忘

之前上传了一个开源播放器工程ffplay for mfc.它将ffmpeg项目中的ffplay播放器(ffplay.c)移植到了VC的环境下,并且使用MFC做了一套界面.它可以完成一个播放器播放视频的基本流程:解协议,解封装,视频/音频解码,视音频同步,视音频输出.此外还包含一些控制功能:播放,暂停/继续,前进,后退,停止,逐帧播放,全屏等:以及一些码流分析功能:视频解码分析和音频解码分析. 详细的软件使用就不仔细介绍了,本文简单介绍其中比较重要的模块的流程.以防长时间不看的话忘了~ 软件信息:

备忘:hibernate, logback, slf4j实际应用一例

用hibernate写一些简单的数据库的Java应用.主要是温习一下.之前弄过的一些都忘了.发现还是得记下来,不然很快就忘. 1. Eclipse版本,用Juno, J2EE版本.最好下载zip版本的,直接解压就运行. 2. JDK安装,到Oracle上搜索jdk, 然后下载.安装JDK后,设置JAVA_HOME,指到JDK安装目录,将%JAVA_HOME%\bin放到PATH变量的最前面. 3. Maven.到Eclipse marketplace上搜索maven, 会有一个Maven Int

一篇 jQuery 常用方法及函数的文章留存备忘。

jQuery 常见操作实现方式 $("标签名") //取html元素 document.getElementsByTagName("") $("#ID") //取单个控件document.getElementById("") $("div #ID") //取某个控件中 控件 $("#ID #ID") // 通过控件ID取其中的控件 $("标签.class样式名") /

怎么制作GIF 制作动态图的软件哪个好

GIF在日常的聊天中使用较多,不仅仅可以调节氛围,还增加了很多的趣味性,同时也避免了很多的尴尬,可能很多人都和小编一样,最初使用的表情包都是手机中自带的,其实自己也是可以制作的,那怎么制作GIF,制作动态图的软件哪个好呢?1.首先今天说的是一个电脑端的GIF制作工具,将要制作的素材都准备好,然后在电脑上运行迅捷GIF制作工具即可:2.安装同款制作工具,双击打开之后会出现两个选择,一个是直接录制电脑屏幕,一个是对已有素材进行编辑:3.找好要制作的GIF的素材或者视频来源,点击"启动屏幕录制&quo