Как получить координаты предмета на скриншоте?
У меня есть код, который делает скриншот игры и ищет нна скриншоте апельсины, потом он должен наводить курсор мыши на эти апельсины, не нашёл полезную для себя информация, пожалуйста помогите
Код:
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("orange.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 = () im = ImageGrab.grab(gameWindow) output = im.save(os.getcwd() + '\screenshot' + '.png', 'PNG') print('nСкриншот сделан и сохранёнn') find_mana() if __name__ == '__main__': main() |
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("orange.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 = () im = ImageGrab.grab(gameWindow) output = im.save(os.getcwd() + '\screenshot' + '.png', 'PNG') print('nСкриншот сделан и сохранёнn') find_mana() if __name__ == '__main__': main()
https://imgur.com/a/7chEszv -скриншот игры
https://imgur.com/aCQ07vT -скриншот предмета
Дополнительно:
https://qna.habr.com/help/rules#3.9
В чём конкретно проблема? Как искал (если вообще искал)?
Потому что даже по запросу "питон навести курсор мыши" быстро выходишь на пакеты pyautogui и pywinauto.
Разберсть, как им пользоваться, проверь, реагирует ли вообще игра на действия этого пакета, потом дополни свой код, чтобы он не обводил объекты прямоугольниками, а кликал по ним.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для получения координат предмета на скриншоте можно воспользоваться различными программами и инструментами. Вот несколько способов, которые могут помочь вам решить данную задачу:
1. **Использование программ для редактирования изображений**:
- Откройте снимок экрана с предметом в программе для редактирования изображений, такой как Photoshop, GIMP или Paint.
- Используйте инструмент "Пипетка" или "Цветовой селектор", чтобы выбрать цвет пикселя на предмете.
- Посмотрите на панели программы, где обычно отображаются координаты выбранного пикселя.
2. **Использование онлайн инструментов**:
- Существуют онлайн инструменты, которые позволяют загружать изображения и получать информацию о цветах и координатах пикселей. Например, сайты как What's My Screen Resolution или GetPixelColor.
3. **Использование программного кода**:
- Если вы хотите получить координаты пикселя с помощью программного кода, вы можете воспользоваться языками программирования, такими как Python или PHP.
from PIL import Image # Открываем изображение img = Image.open('screenshot.png') # Получаем цвет пикселя по координатам (x, y) pixel_color = img.getpixel((x, y)) print('Цвет пикселя:', pixel_color)
Программный код позволяет получить координаты и цвет пикселя на снимке экрана.
Надеюсь, что эти способы помогут вам получить необходимые координаты предмета на снимке экрана. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их!