Home GitHub

Computer Vision Dart Board

Background

Over the Summer in 2022, I spent time in London completing my Interactive Qualifying Project While I was there, I visited a place called Flight Club, a high-tech dart arcade in the center of the city. I was very intrigued by their self-scoring dart boards that kept scores of matches automatically, so I decided to build my own. I utilized OpenCV to process the feeds of two cameras placed on each side of the dart board.


Technical Information

The darts are first detected by using background subtraction. OpenCV constantly looks for changes on the dart board of more than 500 pixels, the approximate size of the dart. Once it detects a dart, the program takes the dart's contour to locate the apex of the arrow. Once the apex is located, the point is converted from the location on the camera's frame to the board's frame. The transformation matrix is calculated by a calibration algorithm that finds the camera frame’s location of four permanently set calibration pins in the board. The algorithm then compares these points to the position on the board’s frame, returning the necessary transformation matrix. After using this transform, the cartesian coordinates are converted to polar coordinates. These polar coordinates are used to return which wedge and which ring the dart has landed in, as well as the final score (i.e. Double, 14, Final Score = 28).

.