Ya tengo el prototipo del mueble, y ya puedo empezar a hacer pruebas para detectar los dardos. Como se ve en el video, la detección es muy buena. Si nos fijamos en la configuración, la webcam esta en el mismo plano XY que la diana. Esto creo que tiene ventajas en la detección del dardo; y desventajas: necesitaré 2 webcams, y posiblemente 3 webcams para posicionar con fiabilidad el dardo en la diana.
Utilizamos la librería OpenCV sobre C++, i el flujo básico consiste en hacer una captura de la webcam; lanzar el dardo; y hacer otra captura. Entonces se hace la diferencia de las imágenes; se convierte a binario; se aplica una máscara para eliminar buena parte del dardo. En este momento hemos de ver la part de abajo del dardo, y la punta bien clara. Tenemos un número limitado de puntos blancos. Con estos puntos calculamos el momento, que sería el centro de gravedad de los puntos. Y haciendo un bucle sobre todos los puntos puedo detectar el punt más inferior, que sería la punta del dardo. Finalmente, para eliminar posibles errores, calculo la distancia entre la punta y el momento, que ha de ser un valor pequeño.
Aún queda mucha faena. Por una parte, hay que traducir la detección del dardo a los posibles sectores donde está el dardo. Después añadir otra webcam. Y si añado una tercera webcam, seguramente necesitaré algún USB Hub. El objetivo es utilizar una sola Raspberry Pi 3 para todo el proyecto.