vision/pc_vision/targets/__init__.py

37 lines
984 B
Python
Raw Normal View History

"""Registry of vision targets — swap by name from the viewer."""
from __future__ import annotations
from .base import Detection, TargetDetector
from .orange_ball import METHOD_LABELS, METHODS, OrangeBallDetector
from .teachable_machine import DEFAULT_MODEL_DIR, TeachableMachineModel
TARGET_FACTORIES = {
"orange_ball": OrangeBallDetector,
"none": lambda: None,
}
def create_target(name: str = "orange_ball") -> TargetDetector | None:
key = name.strip().lower()
if key in ("", "none", "off"):
return None
factory = TARGET_FACTORIES.get(key)
if factory is None:
known = ", ".join(sorted(k for k in TARGET_FACTORIES if k != "none"))
raise ValueError(f"unknown target '{name}'. known: {known}")
return factory()
__all__ = [
"Detection",
"TargetDetector",
"OrangeBallDetector",
"TeachableMachineModel",
"DEFAULT_MODEL_DIR",
"METHODS",
"METHOD_LABELS",
"create_target",
"TARGET_FACTORIES",
]