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