829d2c1b53
箭头/采集图像与 live 的 processed_frame 对齐;deliver_measurement 先画 2D 再提交同一包给 3D。已用 overlay、scene3d 与 replay 相关测试验证。
36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
"""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
|