【问题标题】:How to find the objects connected by lines openCV python如何找到由线openCV python连接的对象
【发布时间】:2020-08-09 06:40:35
【问题描述】:

您好,请查看下面的图片The image is here

我真正想要的是 1)哪条线连接哪个矩形使用OpenCV 例如,如果线连接到第一个和第三个三角形/矩形,那么它将返回一个字典,如{"line_1" :[triangle_1 , rectabgle_2 ,traingale_3] ,}

键作为线,值作为连接对象

我尽了最大努力,但我面临矩形发现和垂直线的问题

如果你有任何逻辑,请告诉我

【问题讨论】:

    标签: python opencv machine-learning computer-vision


    【解决方案1】:

    我不打算在这里编写任何代码,而只是一个简单的方法,您可以使用它来获得所需的结果:

    1. 二值化图像,使线条/矩形/三角形成为前景像素。
    2. 运行 findContours 以查找框/三角形。
    3. 对它们进行凸包分类(矩形/三角形)。获取边界框。
    4. 删除分类轮廓以获得线条。这些应该是现在唯一剩下的轮廓了。
    5. 找出哪些线的极值点接近于分类的矩形/三角形。

    您可能需要的 Opencv 函数:adaptiveThresholding、findContours、convexHull 等。

    【讨论】:

    • @Dharman 感谢您的回复。我已经按照您给出的所有步骤进行了操作。但问题是我无法检测到不正确的正确线条。它们是垂直线,也无法提取矩形,因为在我的图像中,它返回了考虑为矩形的各种形状。这个问题看起来很简单,但不是
    • @Murli,请向我们展示您通过上述方法获得的结果。使用 findContours,您不必担心线条是水平的还是垂直的。
    • 您需要将 cv2.RETR_EXTERNAL 指令与查找轮廓一起使用。您可以发布您为此使用的代码吗?不要使用 cv2.RETR_LIST,它会给你所有的轮廓,你会发现你的用例很难过滤。
    • 您也可以使用 cv2.RETR_CCOMP 并使用 hierarchy-1 轮廓,并在需要时使用 hierarchy-2 进行进一步过滤。使用 CCOMP 的另一个好处是它可以告诉您轮廓是父轮廓还是子轮廓以及它是关闭的还是打开的。
    猜你喜欢
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 2014-01-31
    • 2023-01-15
    相关资源
    最近更新 更多