Задать вопрос
@Delorith

Как сделать цикл выполняющийся до определённого момента?

Имеется следующая функция по поиску изображения в изображении:
def find_img(template_path,sleep):
    img_rgb = pyautogui.screenshot() # Скриншот текущего экрана
    img_rgb.save('D:/images/general.jpg')  
    img_rgb = cv2.imread('D:/images/general.jpg') # Шаблон

    template = cv2.imread(template_path)  # Изображение, искомое в шаблоне

    w, h = template.shape[:-1]


    res = cv2.matchTemplate(img_rgb, template, cv2.TM_CCOEFF_NORMED)

    if str(res[0]) != '[1. 1. 1. ... 1. 1. 1.]':
        threshold = .7

        loc = np.where(res >= threshold)  
        # Проверка совпадения
        for pt in zip(*loc[::-1]):
            x = int(pt[0])
            y = int(pt[1])
            print(x, y) # Координаты совпадения
            pyautogui.moveTo(x, y, duration=0.7)  # Переход по координатам
            pyautogui.click()
            time.sleep(sleep) #Ожидание sleep секунд.
            break
        else:
            print('Image not found')

Что она делает?
Выполняет скриншот экрана и сохраняет его в файл general.jpg, затем ищет в нём другое изображение и, в случае успеха, передвигает курсор мыши и делает клик; в случае неудачи выводит Image not found. Грубо говоря, ищет на экране кнопку и нажимает её.

Мне надо сделать так, чтобы он пытался найти на экране кнопку до тех пор, пока не найдёт. Точнее пока нет кнопки поражения, находить другие кнопки и нажимать их, а когда появится кнопка поражения, цикл заканчивает свою работу.
Возможно ответ очень лёгок и я не вижу чего-то очевидного, но прошу помочь в решении этой задачи.
  • Вопрос задан
  • 342 просмотра
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы