我正在开展一个项目,经过一些过程后,我能够找到一个二进制图像,其中移动的物体是白色的,其余的都是黑色的:
然后,根据它们之间的距离(例如中心的那个),有一种算法可以聚集应该属于一起的斑点。为此,他们使用findContour函数,以便每个用数字标记的blob由其轮廓像素表示(在我的图像中将有5个,中间的一个由两个闭合的blob组成)。算法的输出是属于一起的blob的标志,例如上面的图像,从上到下:(1,[2,3],4,5)。
现在我想为每个这些凝聚的斑点计算一个凹形船体。我有算法来做,但我不能将它应用于外部像素,我需要整个对象的像素!
我该怎么做?
问题在于,如果我从原始图像中检索像素,则会丢失“图像像素”和“斑点”之间的连接。斑点仅包含有关轮廓的信息。
如果您对如何解决这个问题有所了解,我将不胜感激。 :)
答案 0 :(得分:1)
如何使用connectedComponents
(或connectedComponentsWithStats
)代替findContours
?
它会找到你的blob,同时在它的"输出"中为你提供这些blob中所有像素的列表(不仅仅是轮廓)。返回数组。