菜品识别画面稳定重新布防修复记录

变更日期

2026-07-23

问题现象

开启“画面稳定后识别”后,首次稳定可以进入菜品识别;之后移动或更换餐盘,即使画面再次稳定也不会自动识别,只有点击“重新识别”后才恢复。

根因

原稳定判定器只比较当前帧与上一采样帧,并在每次检查后覆盖上一帧基准。餐盘缓慢移动时,相邻两帧的变化可能始终不超过灵敏度阈值,最终画面虽然已经明显变化,判定器仍不会重新布防。

同时,原 8×8 哈希每个分区只读取一个固定像素,局部菜品变化可能避开采样点,进一步增加漏检概率。

问题位于菜品画面稳定判定流程,不在银歌菜品识别 SDK、人脸识别或 datalibrary

修复方案

实施方案见:

核心采用双基准状态机:

代码变更

FrameStabilityDetector.java

DishRecognitionActivity.java

FrameStabilityDetectorTest.java

在原有覆盖上补充:

实际变更文件

本次没有修改设置页、人脸识别、datalibrary、支付流程或相机配置。

验证结果

待真机回归

结论

菜品稳定识别已从“只看相邻帧变化”修正为“相邻帧判断稳定、上次成功触发画面判断累计变化”。该修复解决慢速变化后无法重新进入识别的问题,并补齐 SDK 拒绝、预测超时和自动化恢复后的重新布防。