@aab137

Как найти объект на картинке?

Есть картинка
4cyLsK.png
Необходимо получить
niAGpS.png

Простое кадрирование - не вариант, т.к. положение "штуки с текстом" может измениться.
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
flapflapjack
@flapflapjack
на треть я прав
Вот здесь https://habr.com/ru/post/346258/ отличная реализация вашей хотелки - берется паттерн (в вашем случае это может быть участок окошка "Информация о полете", вычисляется его координата, и дальше - работа с самими данными.

Вот конкретно участок кода, ищущий по паттерну здоровье у монстра:
def get_targeted_hp(self):
        """
        return victim's hp
        or -1 if there is no target
        """

    

        img = get_screen(
            self.window_info["x"],
            self.window_info["y"],
            self.window_info["x"] + self.window_info["width"],
            self.window_info["y"] + self.window_info["height"] - 190
        )

        img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

        template = cv2.imread('img/target_bar.png', 0)
        # w, h = template.shape[::-1]

        res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
        threshold = 0.8
        loc = np.where(res >= threshold)
        if count_nonzero(loc) == 2:
            for pt in zip(*loc[::-1]):
                target_widget_coordinates = {"x": pt[0], "y": pt[1]}
                # cv2.rectangle(img, pt, (pt[0] + w, pt[1] + h), (255, 255, 255), 2)

        if not target_widget_coordinates:
            return -1
        else:
            return target_widget_coordinates


соответственно переделайте под себя размеры рамки, и саму картинку паттерна - Profit!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы