У меня есть простая программа обнаружения объектов, использующая opencv c ++ с yolo, которая обнаруживает игроков в баскетбольном видеоигре. Обнаружение игроков работает отлично. Теперь я хочу сгруппировать обнаруженные объекты (игроков) по командам. Моя идея - сравнить цвет трикотажа. Я попытался преобразовать цвет в черно-белый и просто посчитать ненулевые значения для каждого обнаруженного короля, чтобы соответствующим образом сгруппировать команду. Это с предположением, что цвета трикотажа - темные и светлые (напротив). Точность не приемлема.
Что такое элегантный способ сделать это? Пример кода приветствуется.
cvtColor(roi, gray, cv::COLOR_BGR2GRAY);
threshold(gray, threshold_output, 127, 255, cv::THRESH_BINARY);
int TotalNumberOfPixels = threshold_output.rows * threshold_output.cols;
int white = countNonZero(threshold_output);
Пример кадра
Воображаемый вывод