如何将图像中所有文本的强度(暗度)提高到一个级别?

Posted

技术标签:

【中文标题】如何将图像中所有文本的强度(暗度)提高到一个级别?【英文标题】:How to get the intensity (darkness) of all the text in an image to one level? 【发布时间】:2019-06-10 07:58:53 【问题描述】:

我使用 Pytesseract 和 openCV 从图像中读取文本。我使用了中值模糊、归一化和阈值来去除背景并能够阅读文本。

但是,在规范化过程中,文本的某些部分变得太亮,我希望将它们变暗,以便它们与图像中剩余文本的暗度/强度相匹配。我尝试了形态变换,并尝试了 canny+erosion 来消除噪音,但这些都没有帮助。

我的输入如下所示:

在这里,“代码”,“部门名称”,“15”和“机械”较轻,我无法阅读它们,而我可以轻松阅读“空气分配”和“基本材料和方法” .

任何有关如何更改浅色文本颜色的帮助都会非常有帮助。

【问题讨论】:

为什么我的问题被否决了?令人惊讶。 【参考方案1】:

您可以更改阈值,然后在黑底白字图像中应用侵蚀。

import cv2
import numpy as np

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

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

blur = cv2.blur(gray,(3,3))

_,thresh = cv2.threshold(blur,240,255,cv2.THRESH_BINARY)
cv2.imshow("thresh",thresh)

thresh = cv2.bitwise_not(thresh)

element = cv2.getStructuringElement(shape=cv2.MORPH_RECT, ksize=(5, 5))

erode = cv2.erode(thresh,element,3)
cv2.imshow("erode",erode)

cv2.imshow("img",image)
cv2.waitKey(0)
cv2.destroyAllWindows()

【讨论】:

谢谢你,但我仍然无法检测到那些较轻的部分 我只是向您展示如何通过调整阈值使较轻的部分可见。我很难知道你为整件事做了什么。 是的,我明白了。我用 OCR 引擎从图像中读取文本,附加的图像是更大图像的一部分。我只是无法阅读较亮的部分,即使我将其变暗(通过采用您的解决方案),也尝试消除噪音,但似乎没有帮助

以上是关于如何将图像中所有文本的强度(暗度)提高到一个级别?的主要内容,如果未能解决你的问题,请参考以下文章

如何从图像中提取不同边缘强度的矩形?

如何在python中提高扫描图像中文本的分辨率?

如何使用 Python 将文本添加到多个图像

如何从 kinect 深度图像中获取深度强度,因为它表示像素到传感器的距离

如何将图像背景添加到不透明的文本中? [复制]

SASS 检测颜色暗度以确定样式