Я создаю программу, которая захватывает игру 2048 из https://play2048.co/ и печатает числа с помощью pytesseract. В моем коде cv2 используется для создания черно-белой маски чисел, например:
2048 Mask
Когда я запускаю программу, окно отображает числа правильно, но tesseracct не распознает числа. По какой-то причине он распознает числа на этом изображении , но только некоторые, включая буквы. Вот мой полный код:
import numpy as np
import cv2
from PIL import ImageGrab, Image
import time
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
def process_img(original_image):
hsv = cv2.cvtColor(original_image, cv2.COLOR_BGR2HSV)
lower_grey = np.array([100, 30, 110])
upper_grey = np.array([110, 50, 120])
lower_white = np.array([0, 0, 235])
upper_white = np.array([110, 10, 255])
mask1 = cv2.inRange(hsv, lower_grey, upper_grey)
mask2 = cv2.inRange(hsv, lower_white, upper_white)
mask = cv2.bitwise_or(mask1, mask2)
return mask
def main():
last_time = time.time()
numList = []
while True:
screen = np.array(ImageGrab.grab(bbox=(1194,386, 1694, 886)))
new_screen = process_img(screen)
new_screen = cv2.bitwise_not(new_screen)
frame = cv2.cvtColor(new_screen, cv2.COLOR_RGB2BGR)
print('Loop took {} seconds'.format(time.time()-last_time))
last_time = time.time()
cv2.imshow('window', new_screen)
if cv2.waitKey(25) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break
cv2.imwrite("./frame.png", frame)
print(pytesseract.image_to_string('frame.png'))
main()