python - 平滑像素化二值图像python代码的边缘

标签 python opencv image-processing ocr

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

图片

Image

最佳答案

enter image description here

您可以中值模糊图像,然后尝试一系列 morphological transformations ,特别是带有 3x3 内核的 cv2.MORPH_CLOSE 似乎在这里运行良好。您可以使用内核大小和迭代次数来获得所需的结果

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()

关于python - 平滑像素化二值图像python代码的边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56838217/

相关文章:

c# - 使用 C# 在图像中查找黑色正方形/矩形

ruby-on-rails - 将 RMagick 生成的文件从 Heroku 上传到 Amazon S3

python - 为什么我被迫在 python 中使用 os.path.expanduser?

python - 使用 OpenCV 进行裂纹检测之前去除背景纹理图案

c++ - 如何使用 OpenCV 在视频中查找对象

Java - OpenCV 忽略额外的轮廓

python - 如何在 ipython 中将脚本作为模块导入?

python - 在 Python 中特定字符出现之前删除文本

python - 启动 docker-compose : python modules not installed 时出现问题

python - 如何围绕 2d numpy 数组中的特定值创建非矩形边界框?