#opencv #ocr #tesseract #python-tesseract #opencv-python
#opencv #ocr #тессеракт #python-тессеракт #opencv-python
Вопрос:
Я пытаюсь прочитать символы из этого изображения. Но кривая между ними мешает процессу. Может кто-нибудь помочь мне с этим, пожалуйста? Как я могу извлечь буквы из таких изображений?
img = cv2.imread('screenshot.png', 0)
ret, thresh_img = cv2.threshold(img, 125, 255, cv2.THRESH_BINARY_INV)
cv2.imshow('grey image',thresh_img)
cv2.imwrite("result11.jpg", thresh_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Я попытался преобразовать его в шкалу серого и удалить волновой шум. Я не могу этого сделать. Пожалуйста, помогите мне. Новичок в OpenCV.
Ответ №1:
Вы можете применить следующую последовательность:
1 — Адаптивный порог
2- Морфологическое преобразование
3- Побитовая операция
Шаг 1: адаптивный порог
-
Получите разные пороговые значения для разных областей одного и того же изображения для получения лучших результатов.
-
Результат:
Шаг 2: морфологическое преобразование
-
Мы применим:
Шаг 3: побитовая операция
Теперь, если мы прочитаем с изображения, результат будет:
dbdhm
Код:
import cv2
import numpy as np
import pytesseract
img = cv2.imread("UzhPS.png")
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
flt = cv2.adaptiveThreshold(gry,
100, cv2.ADAPTIVE_THRESH_MEAN_C,
cv2.THRESH_BINARY, 13, 16)
krn = np.ones((3, 3), np.uint8)
opn = cv2.morphologyEx(flt, cv2.MORPH_OPEN, krn)
cls = cv2.morphologyEx(opn, cv2.MORPH_CLOSE, krn)
gry = cv2.bitwise_or(gry, cls)
txt = pytesseract.image_to_string(gry)
print(txt[2:])