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())