【发布时间】:2020-03-18 13:22:21
【问题描述】:
我使用了这个代码:
horizontalStructure = cv2.getStructuringElement(cv2.MORPH_RECT, (horizontalsize, 1))
horizontal = cv2.erode(horizontal, horizontalStructure, (-1, -1))
horizontal = cv2.dilate(horizontal, horizontalStructure, (-1, -1))
删除线条。
还有一些过滤器可以删除噪音并加粗字体:
blur = cv2.GaussianBlur(img, (11, 11), 0)
thresh = cv2.threshold(blur, 80, 255, cv2.THRESH_BINARY)[1]
kernel = np.ones((2,1), np.uint8)
dilation = cv2.erode(thresh, kernel, iterations=1)
dilation = cv2.bitwise_not(dilation)
尽管有阈值和其他方法,但您可以看到仍然存在大量噪音
这是我想要达到的结果:
你知道可以帮助我实现这个结果的 OpenCV 过滤器吗?
【问题讨论】:
-
opencv中有很多方法可以进行图像阈值化。你还没有写出你用过哪一个。你见过这个documentation 吗?
-
我认为如果没有关于图像数据的特定领域知识,就没有可以应用的开箱即用过滤器。我认为您基本上是在寻找要从图像中删除的垂直线和水平线。如果是这种情况,有一些边缘检测过滤器可以帮助您。也许您可以通过 blob 大小和 blob 的纵横比过滤检测到的边缘?但同样,这种强烈程度取决于图像的结构。我认为您正在尝试从图像中删除某些特征而不是噪声。
标签: python image opencv image-preprocessing