由于这是一个电脑游戏,我认为条的颜色应该是恒定的。仅当动态照明影响生命条时,这可能不是真的,这是极不可能的。
因此,只需找到具有这种特定颜色的所有像素。然后你做一些形态学操作并将图像分割成斑点。通过仅选择符合某些条件的 blob,您可以找到单位的位置。
我知道我的回答不涉及视频,但是操作应该很简单,应该很快。
至于跟踪,只需在每个点中找到下一帧中最接近的点。
由于 HUD 位置是恒定的,因此移除它应该没有问题。 
这是我在 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
结果:
