找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1872|回复: 3

找图找色总翻车?聊聊模板匹配阈值与多分辨率适配

[复制链接]

13

主题

0

回帖

53

积分

软件网站新手

积分
53
发表于 6 天前 | 显示全部楼层 |阅读模式
脚本在自家手机上跑得好好的,换一台机器就满屏找不到图——这是找图找色新手最高频的坑。根因基本就两类:匹配阈值太死,或者坐标写死了某一台机器的分辨率。


阈值不是越高越好

`findColor` 这类接口一般要传一个相似度阈值。很多人图省事写 0.95,结果目标颜色稍微受光照、抗锯齿影响就匹配不上。实战里 0.85~0.90 是更稳的区间:既能容错,又不会乱匹配到背景。

  1. var p = findColor("#ff5500", 0.88, 0, 0, sw, sh);
  2. if (p) { clickPercent(p.x / sw, p.y / sh); }
复制代码

注意这里用 `clickPercent` 而不是 `click(p.x, p.y)`——把绝对坐标换成百分比,天然适配不同分辨率。








死坐标是大忌

把"点击 (540, 960)"写死,等于只认这一台 1080p 手机。换成百分比坐标后,720p、2K 屏都能点到同一个按钮。AIWROK 的 `clickPercent(x, y)` 和 `rectInPercent(...)` 就是为此设计的。


多点校验更稳

只找一个颜色容易误判。更稳的做法是找一个"特征组合":比如同时校验图标颜色和它右侧文字区域,或者连续找 3 个锚点都在预期位置才认定匹配成功。误匹配率能降一个数量级。


找不到要优雅降级

匹配失败别让脚本卡死重试。设定最大重试次数,超过就走备选路径(比如改用 `auto.getXml()` 找控件文字),再不行就 `toast.show` 提示并暂停,留给人处理。

  1. var tries = 0;
  2. while (tries < 3) {
  3.     var p = findColor(target, 0.88, 0, 0, sw, sh);
  4.     if (p) { clickPercent(p.x / sw, p.y / sh); break; }
  5.     tries++; sleep.millisecond(500);
  6. }
复制代码


截图区域越小越快

`findColor` 的搜索范围是全屏就慢。把范围缩到"只可能在的那个区域",速度能快好几倍,也更不容易误匹配到别处的同色块。





相关阅读


  • 短信验证码中心AIWROK万能调用端
  • clickPercent天然适配不同分辨率找控件点击
  • floatUI深色控制台风格悬浮窗日志

0

主题

2

回帖

4

积分

软件网站新手

积分
4
发表于 5 天前 | 显示全部楼层

找图找色总翻车?聊聊模板匹配阈值与多分辨率适配

收藏了,内容去重记得先归一化再去比,不然看着一样的两条会被当成不同内容。真机上跑一遍再上线,模拟器通过不代表手机通过,系统弹窗经常是坑。操作序列完全相同、固定间隔,这两点比一天发多少条更容易被判定成自动化。要判断值不值得投入,就看这个场景一天重复多少次,一天十次的自动化维护成本可能比手工还高。

0

主题

2

回帖

4

积分

软件网站新手

积分
4
发表于 4 天前 | 显示全部楼层

找图找色总翻车?聊聊模板匹配阈值与多分辨率适配

这个确实是个老问题了。我之前遇到过,把点击坐标写死在 1080p 上,结果 720p 机器上就点不准。改用 `clickPercent` 后,发现匹配成功率提升了不少。还有,用 `findColor` 时阈值不要设得太高,0.85 左右就够了。多点校验也挺重要,比如同时校验颜色和文字,这样误判率明显降低。匹配失败了,就设置个重试次数,超过就走备选方案,不然脚本会一直卡住。

0

主题

3

回帖

6

积分

软件网站新手

积分
6
发表于 3 天前 | 显示全部楼层

找图找色总翻车?聊聊模板匹配阈值与多分辨率适配

你说的很对,我之前也是直接写死坐标,换了手机就废了。以后得用百分比,这样兼容不同分辨率。还有,找颜色的时候多加点校验,比如结合图标和文字一起判断,误判率低多了。万一找不到,就别死循环了,先设定几次重试,超了就走备选方案。这样脚本更健壮。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-10-29 10:58

安卓脚本软件 · 键鼠盒子 · HID · 机械臂

快速回复 返回顶部 返回列表

随机推荐 · 热帖 / 新帖 / 随便看看

社区会员(随机展示)