Как вывести интенсивность (темноту) всего текста на изображении на один уровень? - PullRequest
0 голосов
/ 16 января 2019

Я использовал Pytesseract и openCV для чтения текста с изображения.Я использовал медианное размытие, нормализацию и порог, чтобы удалить фон, и смог прочитать текст.

Однако некоторые части текста стали слишком светлыми в процессе нормализации, и я хочу затемнить их, чтобы они соответствовали темноте / интенсивности оставшегося текста на изображении.Я пробовал морфологические преобразования и пробовал canny + erosion для удаления шума, но ни один из них не помог.

Мой ввод выглядит следующим образом:

The input

Здесь "Код", "Название подразделения", "15" и "Механический" легче, и я не могу их прочитать, тогда как я легко могу читать "Распределение воздуха" и "Основные материалы и методы".

Любая помощь в том, как изменить цвет более светлого текста, будет очень полезна.

1 Ответ

0 голосов
/ 16 января 2019

Можно изменить пороговое значение, а затем применить размытие к изображению белого текста в черном фоне.

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

enter image description here

...