#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
ПРИМЕЧАНИЕ: эти изображения выдали «НУЛЕВОЙ» результат, и я не знаю, почему
Комментарии:
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)