# sahniaditya007/crossviewid-multi-camera-player-tracking architecture

> Architecture diagram of the GitHub repository sahniaditya007/crossviewid-multi-camera-player-tracking, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sahniaditya007/crossviewid-multi-camera-player-tracking
- Repository: https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking

## Overview

CrossViewID is a lightweight football-player pipeline: a user runs the entry point on synchronized broadcast and tacticam videos, producing per-view detections and tracks, cross-view identity matches, and a JSON report plus console summary. The graph separates orchestration, vision processing, and reporting. README capabilities include configurable greedy/Hungarian matching and CPU/CUDA execution; source excerpts establish the main calls and detector/tracker behavior, while some matching internals are only partially sampled.

Main entry points: [`main.py`](https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/main.py) (Workflow entry), [`utils/detector.py`](https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/utils/detector.py) (Player detection), [`data/broadcast.mp4`](https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/data/broadcast.mp4) (Broadcast video), [`data/tacticam.mp4`](https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/data/tacticam.mp4) (Tacticam video)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orchestration["Pipeline orchestration"]
  node_main["Workflow entry<br/>[main.py]"]
  node_broadcast["Broadcast video<br/>[broadcast.mp4]"]
  node_tacticam["Tacticam video<br/>[tacticam.mp4]"]
end

subgraph group_vision["Vision processing"]
  node_weights["YOLO weights<br/>[best.pt]"]
  node_detector["Player detection<br/>[detector.py]"]
  node_tracker["IoU tracking<br/>[tracker.py]"]
end

subgraph group_results["Matching and reporting"]
  node_matcher["Cross-view matching<br/>[matcher.py]"]
  node_console["Console summary<br/>[main.py]"]
  node_report["JSON report"]
end

node_user(("Operator"))
node_yolo["Ultralytics YOLO"]

node_user -->|"runs"| node_main
node_main -->|"checks"| node_broadcast
node_main -->|"checks"| node_tacticam
node_main -->|"checks"| node_weights
node_main -->|"runs on both views"| node_detector
node_detector -->|"reads frames"| node_broadcast
node_detector -->|"reads frames"| node_tacticam
node_detector -->|"loads"| node_weights
node_detector -->|"runs inference"| node_yolo
node_main -->|"tracks detections"| node_tracker
node_main -->|"matches tracks"| node_matcher
node_main -->|"prints summary"| node_console
node_main -->|"writes JSON"| node_report

click node_main "https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/main.py"
click node_broadcast "https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/data/broadcast.mp4"
click node_tacticam "https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/data/tacticam.mp4"
click node_weights "https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/models/best.pt"
click node_detector "https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/utils/detector.py"
click node_tracker "https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/utils/tracker.py"
click node_matcher "https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/utils/matcher.py"
click node_console "https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/main.py"
click node_report "https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/tree/main/output"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_broadcast,node_tacticam toneBlue
class node_weights,node_detector,node_tracker toneAmber
class node_matcher,node_console,node_report toneMint
class node_user,node_yolo toneIndigo
```

## Components

### Pipeline orchestration

- [Workflow entry](https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/main.py): `main.py`
- [Broadcast video](https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/data/broadcast.mp4): `data/broadcast.mp4`
- [Tacticam video](https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/data/tacticam.mp4): `data/tacticam.mp4`

### Vision processing

- [YOLO weights](https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/models/best.pt): `models/best.pt`
- [Player detection](https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/utils/detector.py): `utils/detector.py`
- [IoU tracking](https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/utils/tracker.py): `utils/tracker.py`

### Matching and reporting

- [Cross-view matching](https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/utils/matcher.py): `utils/matcher.py`
- [Console summary](https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/blob/main/main.py): `main.py`
- [JSON report](https://github.com/sahniaditya007/crossviewid-multi-camera-player-tracking/tree/main/output): `output`

### Other components

- **Operator**
- **Ultralytics YOLO**

## Connections

- Operator → Workflow entry: runs
- Workflow entry → Broadcast video: checks
- Workflow entry → Tacticam video: checks
- Workflow entry → YOLO weights: checks
- Workflow entry → Player detection: runs on both views
- Player detection → Broadcast video: reads frames
- Player detection → Tacticam video: reads frames
- Player detection → YOLO weights: loads
- Player detection → Ultralytics YOLO: runs inference
- Workflow entry → IoU tracking: tracks detections
- Workflow entry → Cross-view matching: matches tracks
- Workflow entry → Console summary: prints summary
- Workflow entry → JSON report: writes JSON
