摘要
战斗画面左右各有一个英雄 HUD(头像、攻击、防御、法强、魔力)。程序除了读数字,还会看英雄旗帜的颜色来判断这一侧是红方还是蓝方;颜色票数不到 80% 就认为“这一侧不可靠”,整侧不输出。
在一段训练录像(10 月 10 日 01:39)的两张已保存截图上,左侧 HUD 清楚可见,双尺度 OCR 的八个读数也全部正确,但保存结果里只有右侧英雄。排查发现原因是旗帜颜色的固定取样框包含了蓝灰色外阴影和旗帜下端的弯角,红票不足 80%,于是读对的数字连同英雄身份一起被丢掉。只把取样框收窄到旗帜的直线彩色饰边,颜色门槛不变,问题就解决了。
这件事的用户价值在下游:恢复敌方英雄的同帧读数后,SE(状态估计)终于能把“某生物攻击降了 6”分解成“英雄攻击降了 1 + 其他原因降了 5”。
要回答的问题
可见的敌方 HUD 被漏读,第一个拒绝点在哪里——颜色、OCR、还是装配门槛?能否用一个不降低阈值的小修复解决,而且不影响其他读数?
数据与来源
只用这段已曝光训练录像中已有的 PNG,不打开录像、不新增抽帧、不访问留出材料:
| 帧 | 媒体秒 | 左方英雄 攻/防/法强/魔力 | 用途 |
|---|---|---|---|
| F032 | 634.0 | 13/21/32/216:238 | 双侧 HUD 都正常的阳性对照 |
| F045 | 1482.1 | 9/16/37/86:238 | 问题帧 |
| F046 | 1552.4 | 8/15/37/64:238 | 问题帧 |
另用 16:57 训练局一张截图做像素对照(原本希望是反向配色,实际也是左红右蓝,所以反向配色只由软件测试覆盖,没有为此继续找图)。媒体时间来自自动分析日志,不用截图文件名里的墙钟时间。
方法
- 用生产路由读取器只读 HUD,保留所有字段尝试、队色、主体和输出,不输入人工数值或过去的英雄身份。
- 定位第一个拒绝点:OCR 八项都成功;旗帜颜色票数 F045 红 668/蓝 189、F046 红 652/蓝 184,红票占比不到 80%,可见侧列表把左侧剔除了。
- 最小修改:旗帜取样框从左 x53:62 / 右 x2373:2382、y268:407 改为左 x56:64 / 右 x2376:2384、y268:392,只覆盖直线彩色饰边。色相、饱和度、亮度、票数和 80% 门槛,双尺度 OCR 一致性、头像身份门槛、所有格式和 SE 规则都不变。
- 只替换两张 HUD 读取结果,其余 47 帧和所有生物面板、日志、状态输出复用,用公开的 SE 入口对 45、46、49 帧前缀做成对重算。
设置
五次 HUD 读取在 CPU、限 8 个物理核下逐个执行,读取时间 3.47–3.80 秒(不含启动和模型初始化,可能受其他负载影响),不作提速或 p95 结论。
结果
颜色票数: 新框 F045 红 888/蓝 0、F046 红 872/蓝 0;F032 原有左右队色保持。
读数: F045/F046 修复前后原始 16 组 OCR 尝试、右方 4 个字段和身份完全相等;唯一变化是恢复了此前被几何门槛丢掉的左方四字段和英雄候选。两张问题图都目视核对过原图。
下游 SE: F045→F046 之间,一个敌方生物(修道院长)攻击 43→37、防御 54→48。修复前两端都缺同帧英雄读数,无法分解;修复后 SE 自动给出“生物变化 −6 = 同帧英雄变化 −1 + 其他净变化 −5”,两端英雄来源都是同帧 HUD。18 张生物面板中只有这两张的参考变化,其余 16 张保持;攻击证据和排除列表逐项保持。敌方魔力新增 216→86 和 86→64 两次净下降(“确认”只表示之后读数仍更低,不代表一次施法或费用已认证)。
验证: 新增 11 项测试修复前 3 失败、8 通过,修复后全部通过;连同路由、消费者、SE 属性历史和 App 保存导入回归共 334 项不同检查通过。用当前源码的 App 实际导入新结果、点击“推断说明”定位到上述分解,截图已目视检查。
失败与负结果
- 首次诊断脚本试图给一个只读属性赋值而退出(还没跑 OCR);修正实验包装器后重跑,生产代码没有这个问题。
- 首次 App 校验失败:迁移后的保存路径正反斜杠混用,与标准化后的字符串不等。没有放宽校验,核对是同一文件后在新请求里沿用原来源字符串,另存一份;原失败结果保留。
- 原计划的“反向配色实图”没找到,只能由软件对照覆盖。
局限
- 那 “−5” 的唯一来源(状态或技能)尚未认证,也不保证命中时属性有效;不把残差命名为某个技能。
- 修道院长的前后关联依赖“同局同方同兵种唯一”的前提,不是认证的实例追踪。
- 只是四张已曝光训练图;独立准确率和全实体覆盖仍未达标。没有安装或启动用户 App。
- 推断说明文字很长,可用性不足,本次没有为此扩建界面。
结论与下一步
“终端缺值”不一定是 SE 算不出来,常常是上游已读事实在装配门槛被丢掉。这次是旗帜取样几何问题,收窄框即可在不动任何阈值的前提下恢复。外部审阅支持就此收尾、停止扩大旗帜样例。下一步只做一件事:改善“属性对照”中已有历史解释的摘要和原帧定位(已核实点击详情已经接入了这些解释),不新增推断。
Comments