摘要
游戏的魔法书每一页有若干法术格子。某个法术刚用过、还在冷却时,格子中央会出现一个沙漏圆章,上面写着一个数字。用户明确说明:这个数字是剩余冷却回合,1 表示下回合可用,2 表示两回合后。本实验(编号 B105)新增读取这个数字。
做法是:在已检测到的法术格子里,用一个“遮住数字部分”的沙漏圆章模板找到圆章,再把数字区交给现有 OCR 读两次、要求一致。在 24 张训练书页上 9 个数字全对,在 14 张冻结后才运行的开发书页上 5 个数字全对,所有无数字位置都没有误输出。但正例只有 14 个,结论只能说“这个小规模新增字段能用”,不是完整的冷却覆盖。
要回答的问题
能否在当前截图上可靠读出魔法书格子中央的冷却数字,并在没有数字时保持“未知”而不是写成 0?
本轮只读当前截图上可见的字面,不推算未来回合,也不判断法术能否施放。“数字=剩余冷却回合”这一含义来自用户说明,输出中会标明来源。
数据与来源
- 复用上一轮整理的 38 张书页,逐格查看全部 532 个格子,不是只看算法提议。
- 训练:24 页、336 格,其中 9 个中央数字、219 个有法术图案但无数字、108 个空格;来自 7 个来源组,其中有正例的 4 组。
- 开发:14 页、196 格,其中 5 个中央数字、143 个无数字图案、48 个空格;来自 3 个已曝光来源组,其中有正例的只有 2 组、2 页。
- 没有中央数字的格子不标“冷却 0”。封存验收来源未读取。这是小规模的新增字段验证,不是盲测。
方法
- 搜索范围:只在当前图自动检测到的法术格子内找。
- 定位圆章:用一个 68×68 的沙漏圆章模板(取自一张训练页),匹配时屏蔽中间可变的数字区,在 64/68/72 三个尺寸和有限中心偏移中搜索。模板上原有的数字 1 不参与读数。
- 读数字:把数字区单独送给现有文字读取器,原生尺寸与 3 倍放大各读一次,两次一致且分数 ≥ 0.90 才接受。
- 输出字面值和 remaining_rounds,并保存原始文字、两次分数、圆章框与分数、格子编号;空格、占用未知、没找到可靠圆章、读字失败都保留未知,不从图案、法术名或前后帧补数。
门槛(运行前写定):训练页数字至少 8/9 正确、0 错误接受、327 个无数字位置无误输出;冻结开发页至少 4 个正确、0 错误接受、0 无数字误输出。
设置
初始圆章相关度门槛 0.75 只找到模板来源那一页的 1/9,这次失败保留。查看训练页:其他真实圆章的相关度为 0.607–0.687,无圆章的图案最高 0.377,于是把门槛定为 0.55。训练页 9/9 正确后写下冻结决定,再运行开发页;开发阶段没有修改几何、模板、门槛或标注。
结果
| 范围 | 数字正确 / 可见数字 | 错误接受 | 无数字误输出 | 出现的数字 |
|---|---|---|---|---|
| 训练 24 页 | 9 / 9 | 0 | 0 / 327 | 1、2、4、5、6 |
| 冻结开发 14 页 | 5 / 5 | 0 | 0 / 191 | 2、3、4 |
所有正确数字都关联到对应的法术格子,没有游离数字输出。
接入单图读取入口后(默认关闭,需显式开启),用 14 张开发页加 4 张非书页控制图(英雄、生物、日志、普通战场)各开关一次,共 36 次完整调用:5/5 数字和 191 个无数字位置保持;18 张图的旧输出完全不变;4 张非书页的新字段为“未检测到”。真实命令行同时开启名称、角标、冷却读取时读出 4/4 个中央数字。相关 21 个测试文件 310 项通过。
失败与负结果
- 初始 0.75 门槛只找到 1/9,失败输出保留(门槛之后按训练页数据改为 0.55)。
- 不能把 518 个阴性位置加进分母来包装一个很高的“冷却读字准确率”。
局限
- 正例只有 14 个,数字 0、7 以上和多位数都没有真实图片证据(只有模拟读数的单元测试)。
- 过渡、遮挡、其他分辨率和更多来源没有验收;开发页来源早已曝光。
- 没有测速度、全仓测试或 App 截图到展示的整条链路。
- 外围法术图案的识别本轮因优先这项用户要求而顺延,并未修复。
结论与下一步
中央冷却数字可以作为一个独立的可见字段读出,且未知不会被写成 0。下一步回到外围法术图案与名称核对,同时从已授权录像增加冷却正例、“变暗但没有数字”的负例和更多数值,不反复用这 5 个开发数字调参。
Comments