37 lines
984 B
Python
37 lines
984 B
Python
|
|
"""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",
|
||
|
|
]
|