【问题标题】:Detect different kinds of circles and ovals on the image using OpenCV and Python使用 OpenCV 和 Python 检测图像上不同种类的圆形和椭圆形
【发布时间】:2015-08-06 21:50:20
【问题描述】:

我需要检测图像上的不同形状,例如带有虚线边框的椭圆和圆形。

使用 OpenCV 会带来一些麻烦,例如openCV 检测的不是轮廓,而是一些小的分离线(轮廓)。 对于带有“虚线边框”的椭圆,我需要将其作为单个轮廓,而不是单独的对象。

你有什么建议来解决这个问题?

我还需要识别带有实线边框的椭圆(或圆形)和带有虚线边框的椭圆(圆形)

带实线边框的椭圆

带虚线边框的椭圆:

【问题讨论】:

  • 附上示例图像和当前输出与您的问题,以获得更清晰的上下文。
  • 不能作为图片附加,所以我把它们放在我的 GoogleDrive 链接上面附上了
  • 但是虚线边框的图片在哪里?
  • 我不知道发生了什么,但现在它作为链接附加我在这里很新,所以有些功能很可怕=)现在可以了吗?

标签: python opencv image-processing feature-detection


【解决方案1】:

Hough transform 不应该有虚线或实线边框或其混合的任何问题。我用它来检测我的一个项目中的虚线,椭圆应该不会更难。

OpenCV 默认只为circlesstraight lines 实现霍夫变换,但有一个blog entry 的代码说明如何使其适应椭圆形状。

【讨论】:

  • 酷 - 我不记得转换名称,但我是正确的,因为我只是说“OpenCV 应该包含所需的转换,但它应该需要一些调整才能为你工作”
  • 主要问题是霍夫变换检测到图像上的所有椭圆形——不管它们是实心还是虚线。但对我来说,线型在检测椭圆和圆的情况下具有主要价值
  • 死链接 :/ 向 SO 规则致敬!
  • 修复了死链接:)
【解决方案2】:

最好的办法是使用特定的变换来检测圆形和椭圆,而不是一般的“查找轮廓”调用。

我对 OpenCV 不够熟悉,不知道那里是否内置了这种检测 - 应该是。

互联网搜索更通用的“图像椭圆检测”表明这不是一个固定的问题 - 与正方形和矩形检测不同,因此 OpenCV 已经包含的任何内容都必须进行调整。 (基本思想是底层算法创建了一个新的 n 维空间,其中可以表示目标图像的每个可能的参数化椭圆(例如,每个 x 和 y 中心坐标的轴,w 和 h 半径,以及一个用于旋转),并根据目标图像中的像素对比度填充此矩阵中的命中)。-塞巴斯蒂安的回答为我不记得的这种方法提供了正确的名称:“霍夫变换”,并提供了有关如何它可以工作,以及如何在 OpenCV 上扩展它。

【讨论】:

    猜你喜欢
    • 2014-12-23
    • 2011-07-19
    • 2015-01-12
    • 2021-11-18
    • 1970-01-01
    • 2017-05-24
    • 2016-06-01
    • 1970-01-01
    • 2017-07-01
    相关资源
    最近更新 更多