Так как это компьютерная игра, я думаю, что цвет полос должен быть постоянным.Это может быть не так, только если динамическое освещение влияет на индикатор работоспособности, что весьма маловероятно.
Таким образом, просто найдите все пиксели с этими конкретными цветами.Затем вы делаете некоторые морфологические операции и сегментируете изображение на капли.Выбирая только те двоичные объекты, которые соответствуют некоторым критериям, вы можете найти расположение блоков.
Я знаю, что мой ответ не связан с видео, но операции должны быть настолько простыми, что они должны быть очень быстрыми.
Что касается отслеживания, просто найдите для каждой точки ближайшую в следующем кадре.
Поскольку местоположение HUD является постоянным, не должно быть проблем с его удалением.![Image without HUD](https://i.stack.imgur.com/WB9HT.jpg)
Вот моя быстрая и не очень надежная реализация в Matlab, которая имеет несколько ограничений:
- Единицы должны быть достаточно исправными (по крайней мере, 40 пикселей в ширину)
- Прутки не перекрываются.
function FindUnits()
x = double(imread('c:\1.jpg'));
green = cat(3,149,194,151);
diff = abs(x - repmat(green,[size(x,1) size(x,2)]));
diff = mean(diff,3);
diff = logical(diff < 30);
diff = imopen(diff,strel('square',1));
rp = regionprops(diff,'Centroid','MajorAxisLength','MinorAxisLength','Orientation');
long = [rp.MajorAxisLength]./[rp.MinorAxisLength];
rp( long < 20) = [];
xy = [rp.Centroid];
x = xy(1:2:end);
y = xy(2:2:end);
figure;imshow('c:\1.jpg');hold on ;scatter(x,y,'g');
end
И результаты:
![enter image description here](https://i.stack.imgur.com/x6TQ4.jpg)