Детекция светодиодов на изображении

Только знакомлюсь с OpenCV, нужно реализовать программу по вычислению координат на изображении светодиодов (рисунки ниже). Как можно сделать это наиболее эффективно? Проблема ещё в том, что на фоне могут присутствовать посторонние объекты, а так же светодиоды на изображении не всегда имеют строго синий цвет (может варьироваться от очень светлых до темных).


Ответы (1 шт):

Автор решения: Dima Cima
Mat pic; // твоё изображение
Mat mask; // то что получиться
img = imread("Svetodiod.jpg"); 
cvtColor (pic, pic, COLOR_BGR2HSV); //конвертация цветов в HSV не обязательно

Scalar min(minH, minS, minV); // Минимальные данные твоего цвета
Scalar max(maxH, maxS, maxV); // Максимальные данные твоего искомого цвета

inRange(pic, min, max, mask); //собственно сама функция поиска. 
//на картинке pic ищет цвета между  min и max и потом выведет их в mask

на Scalar прикручивай ползунки, подбирай цвет.

а дальше на mask ищи обьекты, там по разному. например переведи в контуры с помощью findContours() и найди их центры тяжести или момент.

или boundingRect() вернет тебе квадрат, окружающий эти контуры (с mask)

→ Ссылка