С помощью CV с онлайн-потока отслеживать событие броска и его результаты
Нам необходимо по видеопотоку с камер в онлайн-режиме определять:
Совершение бросков
Подсчет сбитых кеглей (не общее количество, а сбитые/оставшиеся кегли в виде массива)
Нюансы:
Камеры могут быть в разных положениях (разная высота, угол)
Камеры со временем могут незначительно смещаться в разные стороны (Если камера смещается, алгоритм все равно должен работать)
Разный свет над камерой (светлее, темнее, разные разноцветные яркие цвета)
Разный цвет кегль (Например: иногда может быть 9 белых кеглей, 1 кегля красного)
В некоторых случаях шар может пролететь с очень высокой скоростью и будет слабо заметен на камерах
На некоторых присутствуют наборы кеглей с соседних дорожек (Есть камеры где 1 набор кеглей слева/справа от нашей дорожки. Есть камеры где отображается 2 набора кегль с соседних дорожек слева/справа). Предлагаем решить проблему передачей координат ROI (интересующая область)
Входные данные:
видеопоток в режиме реального времени (url, token для авторизации)
координаты региона интересов для этого потока (прямоугольник - левый верхний, правый нижний угол)
В потоке определить момент броска шара (задетектить прохождения шара в кадре), распознать какие кегли упали, какие остались стоять. И отдать эту информацию по api
Выходные данные:
На заранее подготовленный эндпоинт REST API post запросом отправить данные о результатах броска в виде массива [1,1,1,1,0,0,1,0,1,0,1] - где 1 - кегля стоит, 0 - кегля сбита.