【问题标题】:How to smooth lines in the image?如何平滑图像中的线条?
【发布时间】:2020-02-16 08:32:57
【问题描述】:

OpenCV 有没有办法平滑边缘,如这张黑白小图所示?

我尝试了cv2.blurcv2.GaussianBlur,但这只是模糊了图像。我想平滑线条(如图所示的黑线)。我怎么能这样做?

【问题讨论】:

  • 您是否尝试使图像更高分辨率?
  • @xprilion 我尝试了高分辨率,但它只是模糊了图像。有没有办法只使边缘平滑?
  • 目前可能有多种原因。可能是您堆叠的条很宽,因此产生了阶梯效果(我假设它是黑色背景上的白色条)。如果你能减少它们的宽度,你会得到一条更平滑的斜线
  • @xprilion 你能推荐一个方法吗?
  • 如果您解释图像的来源、它是如何“得到锯齿” 以及您想要达到的目标,您可能会得到更好的答案...

标签: python opencv smoothing


【解决方案1】:

您可以找到该区域的外部轮廓,然后找到凸包,并在新图像上使用抗锯齿线标志绘制它。请参阅 python 的 fillConvexPoly 方法。

【讨论】:

    【解决方案2】:

    您不必在整个图像上运行 GaussianBlur,只需在您需要的部分上运行即可。您可以创建自己的蒙版,或使用以下内容作为起点:

    blur = cv2.GaussianBlur( img, (5,5), 0)
    smooth = cv2.addWeighted( blur, 1.5, img, -0.5, 0)
    

    随意尝试参数。

    【讨论】:

      【解决方案3】:

      用这个,我觉得很有效:
      median = cv2.medianBlur(imgBinAll, 5)

      【讨论】:

        猜你喜欢
        • 2023-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-03
        • 1970-01-01
        • 1970-01-01
        • 2013-08-12
        相关资源
        最近更新 更多