如何使用 OpenCV 从图像中删除文本中的空格和点

How to remove Empty Spaces and Dots in Text from Image with OpenCV

我正在使用 OpenCV 和 Python 处理图像。我需要从图像中去除点/噪声。 背景和文本都有空的点/线。 这是一个例子: Example Image 使用此代码我可以删除背景

import cv2
import numpy as np

img = cv2.imread('image.png', 0)
_, blackAndWhite = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)

nlabels, labels, stats, centroids = cv2.connectedComponentsWithStats(blackAndWhite, None,None, None, 8, cv2.CV_32S)
sizes = stats[1:, -1] #get CC_STAT_AREA component
img2 = np.zeros((labels.shape), np.uint8)

for i in range(0, nlabels - 1):
    if sizes[i] >= 50:   #filter small dotted regions
        img2[labels == i + 1] = 255

res = cv2.bitwise_not(img2)

cv2.imwrite('res.png', res)

结果是: Result

如何填充文本中的空白? 要么 我怎样才能让这张图片对 OCR tesseract 可读?

我不确定这是否可行,但您可以尝试扩张+侵蚀 and/or 侵蚀+扩张变换。

查看此图片:

这可以用 OpenCV 实现: https://docs.opencv.org/4.5.5/d9/d61/tutorial_py_morphological_ops.html

此致