首页 > 解决方案 > 有没有好的去除线条的方法?

问题描述

背景

对象图像

我想消除你可以看到的 16 位图像中的灰线。

最终目标是使用背景图像(第一张图像)删除对象图像(第二张图像)中的线条。

我认为它需要 FFT,但我不知道 FFT 是如何应用的。也会有其他方式。

请帮我。

标签: pythonopencv

解决方案


使用 Python/OpenCV 的一种简单方法是使用小的垂直矩形内核多次使用形态学关闭。

输入:

在此处输入图像描述

import cv2
import numpy as np

img = cv2.imread('lines.png')

# do morphology multiple times to remove horizontal lines
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (1,5))
result = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel, iterations = 9)

# write result to disk
cv2.imwrite("lines_removed.png", result)

# display it
cv2.imshow("result", result)
cv2.waitKey(0)


在此处输入图像描述

但是,它会稍微修改各处的图像


推荐阅读