Computer Vision · Sports Analytics
- Python
- Roboflow
- ByteTrack
- OpenCV
- scikit-learn
Any broadcast clip in, NBA-style tracking data out. Two Roboflow models — one for court landmarks, one for players — feed a per-frame homography that maps pixels onto a real 94×50ft court. ByteTrack holds each player's identity across cuts and zooms, and color clustering sorts them into teams for possession and shot detection.
Why I built it
Started as an NFL player/ball tracker (codename BRONCOS), chasing the same question college football film review always raised — could pro-level player tracking, the kind a stadium of cameras usually earns, be built solo with off-the-shelf CV models? Once the homography approach proved out on football, it generalized cleanly into a full basketball court-mapping system.
What I learned
Homography — recomputing the pixel-to-court transform every single frame so pans and zooms never break tracking — plus multi-object tracking with ByteTrack, and how much team-classification quality rides on jersey-color clustering rather than the detector itself.
Next: Cleaner team ID under bad lighting, then a live shot chart.




















