В python можно ли использовать locateCenterOnScreen с регионом?

Есть большая картинка с цифрой 8.

Во-первых, я хочу обнаружить большую картинку, как показано ниже:

left, top, width, height = pyautogui.locateOnScreen('original.png', confidence=0.3)

Во-вторых, если обнаружено большое изображение, я хочу сузить его, чтобы найти число 8.

x, y = pyautogui.locateCenterOnScreen('number8.png', confidence=0.8, region=(left, top, width, height))

Наконец, я хочу нажать на цифру 8

pyautogui.click(x, y)

Это мой код, но он возвращает ошибку ниже:

TypeError: cannot unpack non-iterable NoneType object
import time
import pyautogui

time.sleep(1)
left, top, width, height = pyautogui.locateOnScreen('original.png', confidence=0.3)
if left is None:
    print("Not Detected")
else:
    print("Detected")
    x, y = pyautogui.locateCenterOnScreen('number8.png', confidence=0.8, region=(left, top, width, height))
    if x is None:
        print("Error")
    else:
        print("Clicked")
        pyautogui.click(x, y)
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, locateCenterOnScreen можно использовать с регионом. Эта ошибка, которую вы получаете, связана с тем, что pyautogui просто не может найти объект. И поскольку результата нет, он не может использовать итерацию для присвоения переменных вашим x и y

эта линия здесь никогда не будет правдой

if x is None: 

Потому что эта строка выдаст ошибку, если объект не найден

x, y = pyautogui.locateCenterOnScreen('number8.png', confidence=0.8, region=(left, top, width, height))

Чтобы решить вашу проблему, не форсируйте результат на итерации. Назначьте его одной переменной, затем вызовите каждый x и y из этой переменной.

Coord = pyautogui.locateCenterOnScreen('number8.png', confidence=0.8, region=(left, top, width, height))
if Coord is None:
    print("Error")
else:
    pyautogui.click(Coord.x, Coord.y)

Тогда что мне использовать? Как насчет ниже? если х Ошибка:

Jay Jeong 21.11.2022 06:34

Я обновил свой ответ, чтобы помочь вам решить проблему

Farid Ibrahim 21.11.2022 09:50

Другие вопросы по теме