fix(v1): use ASCII screenshot annotation to avoid garbled text

cv2.putText only supports ASCII (Hershey fonts); the middle-dot in the
label rendered as garbage on saved screenshots. screenshot_label builds
an ASCII-only 'ID STATE' string for the annotation; the Qt live-view
label is unchanged. 72 tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ila
2026-07-21 23:38:53 +08:00
co-authored by Claude Opus 4.8
parent 7029468037
commit b35082a643
5 changed files with 45 additions and 4 deletions
+9
View File
@@ -325,3 +325,12 @@
- 阻塞:无(纯标注文字,本环境可测;截图像素级外观需 Windows 目视,但 ASCII 逻辑本环境可测)。
- 决策:根因是 `cv2.putText` 用 Hershey 字体只支持 ASCII,而标签里的 `·`(U+00B7) 非 ASCII → 乱码。修法:截图专用标签只用 track_id + 状态英文值拼成纯 ASCII;实时画面 Qt 标签保留 `·`(QPainter 能正常渲染)。中文截图标注需 Pillow+TTF,暂不做。
- 下一步:加 `screenshot_label` 纯 ASCII 生成 + 测试,`annotate_frame` 改用它。
## 【2026-07-21】T-210 修复截图标注乱码(cv2 ASCII 文字)(完成)
- 状态:DONE
- 变更:`alerts.py` 新增 `screenshot_label(track_id, state_value)`——用 `track_id + 状态英文值` 拼串并 `encode("ascii","ignore")` 剥离非 ASCII;`annotate_frame` 的 `cv2.putText` 改用它,去掉了原标签里 `·`(U+00B7) 导致的乱码。实时画面(Qt `QPainter`)标签保持不变,仍显示 `P-0001 · CONFIRMED`。
- 验证:新增 test_alerts 两项(`screenshot_label` 为纯 ASCII 且等于 `P-0001 CONFIRMED`、不含 `·`);`python3 -m pytest v1/tests -q` 为 72 passed;`python3 -m compileall -q v1` 退出码 0。
- 阻塞:无。截图像素级观感需 Windows 目视确认,但乱码根因(非 ASCII 送入 Hershey 字体)已在逻辑层修掉。
- 决策:截图标注限定 ASCII;若需中文标注(如"确认摔倒")另立任务用 Pillow+TTF 绘制。
- 下一步:用户 Windows 复测截图文字是否正常;继续 T-203/T-204。