пороговое значение opencv и pytesseract

#python #opencv #python-tesseract

#python #opencv #python-тессеракт

Вопрос:

в настоящее время я пытаюсь разработать какой-нибудь простой код computervision, чтобы считывать количество убийств, которые у меня есть в игре call of duty, и сохранять его в массив как целое число. Код делает скриншот моего экрана каждую секунду, и с помощью opencv я устанавливаю пороговое значение изображения и ввожу его в pytesseract. Хотя числа остаются неизменными, фоновый шум сильно меняет изображение и приводит к большому количеству нулевых входных данных. Я в порядке, если он пропускает несколько входных данных, но пропускаетP или более от всех цифр. Если у кого-нибудь есть какие-либо советы по пороговому значению однозначного изображения с разным фоном, это было бы огромной помощью.

»’

 pytesseract.pytesseract.tesseract_cmd = r'C:/Program Files/Tesseract-OCR/tesseract'

pyautogui.screenshot('pictures/Kill.png', region = (1822, 48, 30, 23))

img = cv2.imread('pictures/Kill.png')

img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret, thresh1 = cv2.threshold(img, 255, 255, cv2.THRESH_TRUNC)

cv2.imwrite('pictures/killthresh1.png',thresh1)

ret, thresh1 = cv2.threshold(img, 180, 255, cv2.THRESH_BINARY)

thresh1 = cv2.bitwise_not(thresh1)

cv2.imwrite('pictures/Killthresh2.png', thresh1)

custom_config = r'-l eng --oem 3 --psm 7 -c 

tessedit_char_whitelist="1234567890" '

killnumber = pytesseract.image_to_string(thresh1, config = custom_config)
  

»’

Оригинальный скриншот pyautogui

Пороговое значение TRUNC

ДВОИЧНОЕ пороговое значение

ПРИМЕЧАНИЕ: эти изображения выдали «НУЛЕВОЙ» результат, и я не знаю, почему

Комментарии:

1. Показать некоторые из изображений входных символов, которые терпят неудачу. Вы пробовали пороговое значение otsu?

Ответ №1:

После прочтения изображения, img = cv2.imread('pictures/Kill.png')

Применить adaptive-threshold к исходному скриншоту pyautogui:

введите описание изображения здесь

Теперь прочитайте:

 txt = pytesseract.image_to_string(thr, config="--psm 7")
print(txt)
  

Результат:

 3
  

Код:


 import cv2
import pytesseract

img = cv2.imread("0wHAy.png")
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thr = cv2.adaptiveThreshold(gry, 255, cv2.ADAPTIVE_THRESH_MEAN_C,
                            cv2.THRESH_BINARY_INV, 21, 9)
txt = pytesseract.image_to_string(thr, config="--psm 7")
print(txt)