区分附加具有相似颜色的对象

Differentiate between appending objects with similar color

我正在尝试检测每个球,计算有多少球,并获取它们的位置。我目前正在使用 Canny Edge Detection,如果球不相互接触,效果很好:

我遇到的问题是,如果球相互接触,就无法再区分它们,它们将被视为一个物体:

我尝试使用 HoughCircles,但发现这只适用于实际的圆圈,而不是扭曲的圆圈。

那么我将如何找到解决方案呢?有没有更适合这个问题的算法,或者我能以某种方式计算出每个轮廓中的各个圆圈吗?

您可以尝试用红色和绿色滤镜框,这样您就可以得到球的轮廓。然后使用分水岭算法分离等高线。

分水岭示例:https://docs.opencv.org/4.x/d2/dbd/tutorial_distance_transform.html