如何使用 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
此致
我正在使用 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
此致