平滑像素化二进制图像python代码的边缘

时间:2019-07-01 15:18:31

标签: python opencv image-processing ocr

我正在使用pytesseract将图像转换为文本,但是精度不是100%,因为图像在调整大小时会发生像素化。应用高斯模糊会平滑边缘,但会使图像模糊,从而使OCR无法检测文本。 什么样的滤镜可以使边缘平滑而不会使图像模糊太多。图片看起来像这样

图片

Image

1 个答案:

答案 0 :(得分:1)

enter image description here

您可以对图像进行中值模糊处理,然后尝试一系列morphological transformations,特别是cv2.MORPH_CLOSE3x3内核,在这里似乎效果很好。您可以使用内核的大小和迭代次数来获得所需的结果

import cv2

image = cv2.imread('1.png')

blur = cv2.medianBlur(image, 7)
gray = cv2.cvtColor(blur, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray,125, 255,cv2.THRESH_BINARY_INV)[1]

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
close = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel, iterations=2)
result = 255 - close

cv2.imshow('thresh', thresh)
cv2.imshow('close', close)
cv2.imshow('result', result)
cv2.imwrite('result.png', result)
cv2.waitKey()