【问题标题】:Python openCV findContours falsely connects neighbouring objectsPython openCV findContours 错误地连接相邻对象
【发布时间】:2015-05-28 17:35:38
【问题描述】:

我在 python 中使用 OpenCV 2.4.8 来分割图像和查找对象。 我想使用 findContours 列出对象并分析它们的面积、形状等。但是,如果我有两个对象仅被一条细的(1 px 宽)对角线隔开,甚至仅在角处对角接触,它们将被识别为一个对象。

这张图说明了问题:

显然有两个对象,但它们被识别为一个。

在 Matlab 中,可以指定一个连通性参数(邻域为 4 或 8)来解决这个问题。这也可以使用opencv以某种方式完成吗?也许使用轮廓的层次结构或其他一些解决方法?

我知道,我可以使用形态腐蚀或开口来分离两个对象,但这可能会导致图像的其他部分出现问题。我已经试过了。

【问题讨论】:

  • OpenCV 3.0 现在有 connectedComponentsconnectedComponentsWithStats 方法,允许您在 4 和 8 邻居连接之间进行选择。如果可以选择更改版本,请参阅我的回答 here

标签: python opencv connection


【解决方案1】:

如果您的对象是圆形的,您可以尝试使用圆形霍夫变换。

如果这样的图像被表示为单个轮廓,那么它必然会有缺陷。您可以搜索凸面缺陷并从那里开始。但这又取决于图像中的对象。

我不确定你的图片包含什么样的物体,所以很难得出一个明确的答案。

【讨论】:

    猜你喜欢
    • 2020-12-21
    • 2012-12-14
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 2016-04-15
    相关资源
    最近更新 更多