【问题标题】:How to detect groups of circles with openCV?如何用openCV检测圆圈组?
【发布时间】:2012-07-09 18:32:25
【问题描述】:

我有一张像下面这样的照片。 我想在图像中找到一组圆圈(它们的位置)。 在下面的示例中应该有三个组。背景是白色的或将是白色的。

(在源图像中不会有这样的矩形。我刚刚画出来是为了展示组应该是什么样子)

能找到吗?

这样的图片怎么样:

没有矩形的圆:

【问题讨论】:

  • 你可以添加没有这些矩形的图像吗?

标签: image-processing opencv object-recognition


【解决方案1】:

您必须使用HoughCircles 识别圈子,然后使用clusterisation (K-Means algorithm)。 OpenCV 有 K-Means 实现:参见 example1example2docs

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      1 - 简单地反转图像,

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

      3 - 找到轮廓,

      4 - 找到边界框。

      例如:

      【讨论】:

      • 如果有例如:CCC CC C (C - Circle),它们之间有很长的空格,是否会放大图像链接圆圈?
      • 这取决于迭代次数、使用的内核等。
      • 例如,在您的情况下,对于 2 次迭代,分组中存在拆分,而 5 给出了正确答案。
      • 哦,不。你不会得到那么多。
      • 我插入的最后一张图片呢?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多