【问题标题】:How do I go about breaking apart this image into two separate lines with opencv?如何使用 opencv 将此图像分成两行?
【发布时间】:2023-04-01 00:25:01
【问题描述】:

我有这张图片,我想通过使用 opencv 删除垂直线将其分成 2 条单独的对角线。我考虑过膨胀,但这会使我想要处理的线条更细,更难检测。我还能做些什么来删除垂直线?

这是用于视频的,不需要的线并不总是垂直的,但比其他两条更直。

【问题讨论】:

    标签: c++ opencv image-processing


    【解决方案1】:

    使用形态学开场。结构元素的形状在这里很重要。使用宽度大于垂直线宽度且高度为 1 的矩形元素。

    在给定的图像中,垂直线的宽度为 4,因此使用以下内容:

    getStructuringElement(MORPH_RECT, Size(5, 1))

    我明白了

    【讨论】:

    • 我选择了这个答案来解释垂直矩形元素。知道了!谢谢!
    • 虽然,据我所知,形态学开场是两个形态学操作一起?
    • 是的,先腐蚀后膨胀
    【解决方案2】:

    首先,使用 erosion 函数 (erode()) 直到垂直线消失。然后,只需使用 dilation (dilate()) - 对角线会再次变粗,您不需要的垂直线不会再次出现。它也适用于不需要的线不垂直的情况 - 不需要的线比您想要保留的线更细就足够了。留下的线条也不必是对角线 - 它们比不需要的线条足够粗就足够了,它们可以有任何方向和方向。

    【讨论】:

    • 我遇到了我想要保留的线条的侵蚀问题,所以,虽然侵蚀/扩张是我所做的过程的一部分,但关于元素形状的答案真的很到位为了我!谢谢
    猜你喜欢
    • 2018-11-23
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 2011-05-20
    • 2019-08-14
    • 1970-01-01
    相关资源
    最近更新 更多