You've already forked MineEVECraft
mirror of
https://github.com/Llloooggg/MineEVECraft.git
synced 2026-03-06 03:36:24 +03:00
83 lines
2.0 KiB
Python
83 lines
2.0 KiB
Python
import logging
|
|
import numpy as np
|
|
import pygetwindow as gw
|
|
import pyautogui
|
|
from pytesseract import pytesseract
|
|
from pytesseract import Output
|
|
import cv2
|
|
|
|
win_name = "EVE - Nostrom Stone"
|
|
pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"
|
|
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format="%(asctime)s - %(message)s",
|
|
datefmt="%d-%b-%y %H:%M:%S",
|
|
handlers=[logging.StreamHandler()],
|
|
)
|
|
|
|
|
|
def get_screenshot(save_result=False):
|
|
eve_window = gw.getWindowsWithTitle(win_name)[0]
|
|
|
|
eve_window.activate()
|
|
|
|
if not eve_window.isMaximized:
|
|
was_minimized = True
|
|
eve_window.restore()
|
|
eve_window = gw.getWindowsWithTitle(win_name)[0]
|
|
|
|
if save_result:
|
|
filepath = "images/screenshot.png"
|
|
else:
|
|
filepath = None
|
|
|
|
screenshot = pyautogui.screenshot(
|
|
filepath,
|
|
region=(
|
|
eve_window.box.left + 10,
|
|
eve_window.box.top,
|
|
eve_window.box.width - 20,
|
|
eve_window.box.height - 10,
|
|
),
|
|
)
|
|
|
|
if was_minimized:
|
|
eve_window.minimize()
|
|
|
|
logging.info("Скриншот получен")
|
|
|
|
return screenshot
|
|
|
|
|
|
def get_boxed(screenshot, save_result=False):
|
|
# img = cv2.imread("test.png") # from file
|
|
img = cv2.cvtColor(np.array(screenshot), cv2.COLOR_BGR2RGB)
|
|
|
|
raw_df = pytesseract.image_to_data(
|
|
img, lang="eng", output_type=Output.DATAFRAME
|
|
)
|
|
filtered_df = raw_df.loc[
|
|
(raw_df["level"] == 5) & (raw_df["text"].notnull())
|
|
][["left", "top", "width", "height", "text"]]
|
|
|
|
if save_result:
|
|
for r in filtered_df.itertuples():
|
|
(x, y, w, h) = (
|
|
r.left,
|
|
r.top,
|
|
r.width,
|
|
r.height,
|
|
)
|
|
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
|
|
|
|
cv2.imwrite("images/highlighted_screenshot.png", img)
|
|
|
|
logging.info("Боксы получены")
|
|
|
|
return filtered_df
|
|
|
|
|
|
screenshot = get_screenshot(True)
|
|
get_boxed(screenshot, True)
|