回放叠加改用展开底图,并统一 2D/3D 投递。

箭头/采集图像与 live 的 processed_frame 对齐;deliver_measurement 先画 2D 再提交同一包给 3D。已用 overlay、scene3d 与 replay 相关测试验证。
This commit is contained in:
ykcheungab
2026-10-06 21:21:37 +08:00
parent 321e52f47a
commit 829d2c1b53
10 changed files with 519 additions and 125 deletions
+35
View File
@@ -0,0 +1,35 @@
"""Overlay base projector: session cache and no fisheye resize fallback."""
from __future__ import annotations
import numpy as np
from orisys_app_shared.analysis.overlay_base import OverlayBaseProjector
def test_overlay_projector_reuses_the_same_frame_id() -> None:
calls: list[int] = []
def project(frame: np.ndarray) -> np.ndarray:
calls.append(1)
out = np.zeros((8, 8, 3), dtype=np.uint8)
out[..., 1] = 40
return out
projector = OverlayBaseProjector(sensor_type="finger", project=project)
first = projector.project(np.zeros((32, 32, 3), dtype=np.uint8), frame_id=7)
second = projector.project(np.ones((32, 32, 3), dtype=np.uint8) * 9, frame_id=7)
assert len(calls) == 1
assert first is second
third = projector.project(np.zeros((32, 32, 3), dtype=np.uint8), frame_id=8)
assert len(calls) == 2
assert third is not second
projector.close()
def test_open_from_unknown_sensor_type_returns_none() -> None:
class _Prov:
sensor_type = "unknown"
sensor_config_ref = ""
assert OverlayBaseProjector.open_from_provenance(_Prov()) is None