File size: 1,380 Bytes
6916285 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | """Run only ball/player tracking and soccer-state extraction.
Examples:
python preprocess.py --init-config configs/tracking_states.json
python preprocess.py --config configs/tracking_states.json
"""
from __future__ import annotations
import argparse
import json
from soccer_ad.preprocessing.pipeline import (
load_preprocessing_config,
run_preprocessing,
write_preprocessing_config,
)
from soccer_ad.utils.logging import setup_logging
def main() -> int:
parser = argparse.ArgumentParser(description="Soccer ball/player tracking and state extraction")
choice = parser.add_mutually_exclusive_group(required=True)
choice.add_argument("--config", help="JSON preprocessing configuration")
choice.add_argument("--init-config", metavar="PATH", help="write an editable JSON template and exit")
parser.add_argument("--log-level", default="INFO")
args = parser.parse_args()
setup_logging(args.log_level)
if args.init_config:
path = write_preprocessing_config(args.init_config)
print(f"wrote {path}")
return 0
try:
report = run_preprocessing(load_preprocessing_config(args.config))
except Exception as exc:
parser.error(str(exc))
print(json.dumps(report, indent=2))
return 0 if report["summary"]["failed"] == 0 else 1
if __name__ == "__main__":
raise SystemExit(main())
|