Суть такова... Делаю бота для игры, принцип работы:
1. Делает скриншот игры #реализовано
2. Ищет на скриншоте объект, в моём случае ману #реализовано
3. Возращает координаты схожа объекта #сам вопрос
4. Затем кликает на эти координаты #знаю как реализовать
Может быть есть способ получше реализовать это? За помощь готов скинуть денюжку!
Код:from PIL import ImageGrab
import os
import time
import cv2
import numpy as np
def find_mana():
img = cv2.imread("screenshot.png") #картинка, на которой ищем объект
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #преобразуем её в серуюш
template = cv2.imread("mana.png", cv2.IMREAD_GRAYSCALE) #объект, который преобразуем в серый, и ищем его на gray_img
w, h = template.shape[::-1] #инвертируем из (y,x) в (x,y)
result = cv2.matchTemplate(gray_img, template, cv2.TM_CCOEFF_NORMED)
loc = np.where(result >= 0.5)
#рисует прямоугольник вокруг объекта
for pt in zip(*loc[::-1]):
cv2.rectangle(img, pt, (pt[0] + w, pt[1] + h), (0, 255, 0), 3)
cv2.imshow("img", img) #выводит на экран результат
def main():
#делает скриншот игры, закоментируйте, если понадобится, так как скриншот я выложил снизу, как и сам объект
gameWindow = (0, 31, 1280, 747)
im = ImageGrab.grab(gameWindow)
output = im.save(os.getcwd() + '\\screenshot' + '.png', 'PNG')
print('\nСкриншот сделан и сохранён\n')
find_mana()
if __name__ == '__main__':
main()
Изображения:
Изображние, на котором ищем:
https://prntscr.com/jtiqoj
Объект, который ищем:
https://prntscr.com/jtiqnp