Darts — Dual Angle (No AI)

Fix applied: shadows + flights should no longer create extra darts. Tips are now chosen as the closest-to-bull pixel in each dart blob. Debug overlay stays ON (red=changed pixels, cyan=A tips, magenta=B tips, lime=accepted).
Camera A (RAW) Not started
Not calibrated
Start camera A, then pick a calibration button below and click that spot on A.
Camera B (RAW) Not started
Not calibrated
Start camera B, then pick a calibration button below and click that spot on B.
Calibration Pick a point (buttons show worth), then click it on the RAW feed of the active camera.
Active cam:
Required: Bull, Top(20 edge), Bottom(3 edge), Left edge (6), Right edge (11), Triple20, Triple7. A: ❌ B: ❌
Camera A (Cropped/Rotated live)
Camera B (Cropped/Rotated live)
Digital Dartboard (20 centered at top)
Counts by color
Totals
Match threshold: 24px
Tip separation (anti-duplicates): 32px
Detected darts (accepted)
# Color Score Tip (x,y) r% Angle° Sector
Ready.