如何用openCV检测圆圈组?

时间:2012-07-09 18:32:25

标签: image-processing opencv object-recognition

我有一张如下图片。 我想在图像中找到一组圆圈(它们的位置)。 在以下示例中,应该有三个组。背景为白色或呈白色。

(在源图像中不会有这样的矩形。我刚刚画过以显示群组应该是什么样的)

有可能找到它吗?

Circles do detect

这样的图片怎么样:   Example 2

没有矩形的圆圈: Example 3

Example 4

3 个答案:

答案 0 :(得分:2)

您必须使用HoughCircles标识圈子,然后使用clusterisationK-Means algorithm)。 OpenCV具有K-Means实现:请参阅example1example2docs

答案 1 :(得分:1)

HoughCircles在它们被视为单独的圆之前,其可能的圆之间的距离作为其参数之一。只需不断调整此参数即可。只要您的圆圈组比每组中的实际圆圈更远,HoughCircles会将每个圆圈计为同一“圆圈”的一部分。

但是,如果您的圆圈组重叠,那么这将无效。你必须以某种方式将每个小组分开。也许如果一个组中的所有圆都在一条线上(就像你的图片中那样),那么基本的Hough线检测会给你一条线 - 然后你可以检查一起靠近的平行线,那些会指示每个组? / p>

答案 2 :(得分:0)

1 - 只需反转图像,

2 - 然后扩大图像,使所有圆圈连接在一起,

3 - 找到轮廓,

4 - 找到边界框。

例如:

enter image description here