Pickle Vision
Real-time referee system for pickleball with 2 CSI cameras on Jetson.
Current Product Scope
Three tabs in the web UI:
Camera- live feeds from both cameras.Calibration- step-by-step court calibration flow (ROI -> lines -> intersections -> template match -> camera pose).Trajectory- 3D court + ball trajectory + VAR overlay.
Dagster pipeline has been removed from active project runtime.
Run
Local (Jetson)
python3 jetson/main.py --port 8080
Open: http://<jetson-ip>:8080
Docker
docker-compose up --build
Open: http://localhost:8080
Calibration Flow
Calibration is launched from the Calibration tab with Run Calibration Flow.
Per camera, UI shows each step status:
- Court ROI (green mask)
- White line segments detection
- Segment merge into court lines
- Line intersections
- Template point match
- Camera pose solve (PnP)
- Geometry overlay
Output is stored in:
jetson/config/cam0_calibration.jsonjetson/config/cam1_calibration.json
Main Runtime Files
jetson/main.py- dual-camera loop, calibration, detection, VAR eventssrc/web/app.py- Flask API + tab endpointssrc/web/templates/index.html- 3-tab UIsrc/calibration/camera_calibrator.py- camera geometry / projectionsrc/physics/trajectory.py- trajectory modelsrc/physics/event_detector.py- close-call logic
Dependencies
Install from requirements.txt.
pip install -r requirements.txt
Notes
- Calibration is required before trajectory/VAR logic becomes fully useful.
- Each camera is calibrated independently against known half-court geometry.
Description
Languages
Python
62.5%
HTML
37%
Dockerfile
0.3%
Shell
0.2%