У меня есть этот набор изображений, которые я хочу снять шум, чтобы запустить OCR на нем:

enter image description here

enter image description here

Я пытаюсь прочитать 7810 с картинки.

Я пытался

cv2.threshold(img, 128, 255,cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
cv2.fastNlMeansDenoising(img,None,60,10,20)

И некоторые морфологические выражения, но ни один, кажется, не работает, чтобы очистить это изображение достаточно.

Любые рекомендации о том, как отфильтровать это изображение в достаточной степени, чтобы я мог запустить OCR или некоторые сценарии обнаружения ML на этом, как pytesseract?

2
ohyesyoucan 30 Май 2019 в 05:35

2 ответа

Лучший ответ

Вы можете попробовать использовать { X0}}, поскольку ваше изображение имеет разные условия освещения в разных областях.

enter image description here

import cv2

image = cv2.imread("1.jpg",0)
thresh = cv2.adaptiveThreshold(image,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,21,2)

cv2.imshow('thresh', thresh)
cv2.waitKey(0)
1
nathancy 30 Май 2019 в 19:52

Вы можете начать с использования медианного фильтра для удаления соли и перца:

cv2.medianBlur(source, 3)

Затем попробуйте пороговое значение Otsu, как вы сделали. Возможно, это не решение проблемы, но это облегчает работу алгоритма обнаружения текста на изображении.

1
Surya Palaniswamy 30 Май 2019 в 04:15
56370943