diff --git a/menti_words.py b/menti_words.py index 4222dcb..1406bec 100644 --- a/menti_words.py +++ b/menti_words.py @@ -2,6 +2,8 @@ import cv2 as cv import numpy as np import pydirectinput from nltk.corpus import words +from pytesseract import pytesseract + from utils import mse from game_base_class import GameBase import random @@ -18,6 +20,8 @@ class MentiWords(GameBase): def __init__(self, overlay): super().__init__(overlay) + pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' + self.observation = np.zeros((9, 9), dtype=int) self.colors = [1, 2, 3, 4, 5, 6, 7, 8, 9] @@ -120,23 +124,29 @@ class MentiWords(GameBase): def get_current_board_state(self): - screenshot = cv.imread("menti_words/screenshot.jpg") - #screenshot = self.capture_window.get_screenshot() + #screenshot = cv.imread("menti_words/screenshot.jpg") + screenshot = self.capture_window.get_screenshot() screenshot = screenshot[870:1270, 1080:1480] - cv.imshow("screenshot", screenshot) - cv.waitKey(150) + #cv.imshow("screenshot", screenshot) + #cv.waitKey(150) #continue for needle_key in self.needles.keys(): # gray_needle = cv.cvtColor(self.needles[needle_key], cv.COLOR_BGR2GRAY) # thresh_needle = cv.threshold(gray_needle, 0, 255, cv.THRESH_BINARY_INV + cv.THRESH_OTSU)[1] - #rectangles = self.vision_stun.find(screenshot, self.needles[needle_key], 0.85, 56) - rectangles = self.vision_stun.find(screenshot, self.needles[needle_key], 0.95, 1 ,True, self.masks[needle_key]) + rectangles = self.vision_stun.find(screenshot, self.needles[needle_key], 0.85, 1) + #rectangles = self.vision_stun.find(screenshot, self.needles[needle_key], 0.95, 1 ,True, self.masks[needle_key]) if len(rectangles) == 0: continue - points = self.vision_stun.get_click_points(rectangles) - self.current_letters.append(needle_key) - self.letter_coords[needle_key] = points[0] + cropped1 = self.vision_stun.draw_display_picture(screenshot, rectangles, 10) + + text_1 = pytesseract.image_to_string(cropped1, lang='eng', config='--psm 6').strip() + if str.isalpha(text_1): + #cv.imshow("cropped1", cropped1) + #cv.waitKey(150) + points = self.vision_stun.get_click_points(rectangles) + self.current_letters.append(text_1) + self.letter_coords[text_1] = points[0] if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused': return diff --git a/vision.py b/vision.py index 865958b..e6835c2 100644 --- a/vision.py +++ b/vision.py @@ -246,11 +246,11 @@ class Vision: return haystack_img - def draw_display_picture(self, haystack_img, rectangles): + def draw_display_picture(self, haystack_img, rectangles, border = 0): pic = None for (x, y, w, h) in rectangles: - pic = haystack_img[y:y + h, x:x + w] + pic = haystack_img[y-border:y + h +border, x-border:x + w + border] # scale_percent = 500 # percent of original size # width = int(pic.shape[1] * scale_percent / 100)