Python pyautogui — проблема с печатью местоположения, когда изображение не обнаружено

Итак, я сделал программу, которая обнаруживает изображения и нажимает на них, когда они появляются, и она работала нормально, но однажды (если бы я удалил что-то, чего не должен), но теперь она вызывает исключение, когда этого изображения нет на экране. [Код и исключение][1]

КОД ПРОСТО:

import pyautogui
location1 = pyautogui.locateCenterOnScreen('velaki.png')
print(location1)

И ТОГДА ОШИБКА:

Traceback (most recent call last):
File "C:\Users\Patroklos\Desktop\FoE\taxini.PY", line 3, in <module>
    location1 = pyautogui.locateCenterOnScreen('velaki.png')
  File "C:\Python34\lib\site-packages\pyscreeze\__init__.py", line 300, in locateCenterOnScreen
    coords = locateOnScreen(image, **kwargs)
  File "C:\Python34\lib\site-packages\pyscreeze\__init__.py", line 271, in locateOnScreen
    retVal = locate(image, screenshotIm, **kwargs)
  File "C:\Python34\lib\site-packages\pyscreeze\__init__.py", line 255, in locate
    points = tuple(locateAll(needleImage, haystackImage, **kwargs))
  File "C:\Python34\lib\site-packages\pyscreeze\__init__.py", line 249, in _locateAll_python
    raise ImageNotFoundException('Could not locate the image.')
pyscreeze.ImageNotFoundException: Could not locate the image.

Обычно он должен возвращать None, если изображение не найдено, кроме исключения.

![1]: https://i.stack.imgur.com/0ozRR.png


person P. Pat    schedule 14.01.2019    source источник
comment
Пожалуйста, разместите код и ошибку здесь.   -  person customcommander    schedule 15.01.2019
comment
@customcommander извините за неудобства, это мой первый пост на StackOverflow, и я не знал, как правильно писать   -  person P. Pat    schedule 15.01.2019
comment
Не беспокойтесь об этом. Спасибо за редактирование вашего поста :)   -  person customcommander    schedule 15.01.2019


Ответы (4)


У меня была точно такая же проблема, как у вас. Оказывается, одна из зависимостей PyAutoGUI; PyScreeze был обновлен 6 января 2019 года с версии 0.1.18 до 0.1.19. И версия 0.1.19 вызывает исключение ImageNotFound через некоторое время после невозможности найти изображение, которое завершает ваш скрипт вместо возврата «Нет».

Все, что вам нужно сделать, это понизить PyScreeze с 0.1.19 до 0.1.18, и он снова работает нормально.

person Hrishikesh Kulkarni    schedule 10.02.2019

Кажется, была новая версия (0.9.41), которая вызывает исключение вместо None, и я не заметил.

person P. Pat    schedule 19.01.2019

Если изображение, которое вы пытаетесь найти, не было сохранено в том же разрешении, которое отображается, функция pyautogui.locateCenterOnScreen('velaki.png') никогда не найдет его. Также вы можете использовать библиотеку opencv и передать значение достоверности, и изображение не должно будет совпадать на 100%.

person arielbi.289    schedule 16.01.2019
comment
когда изображение на экране, он находит его. Если изображения нет на экране, вместо «Нет» появляется эта ошибка. Вот для чего прошу помощи. - person P. Pat; 18.01.2019
comment
вы должны использовать try и except блок кода. - person arielbi.289; 21.01.2019

«ПРИМЕЧАНИЕ. Начиная с версии 0.9.41, если функции локации не могут найти предоставленное изображение, они вызывают исключение ImageNotFoundException вместо возврата None».

Написано: onhttps://pyautogui.readthedocs.io/en/latest/screenshot.html Но я не знаю, как обновить этот модуль. у меня новинка.

person Attila Kiss    schedule 09.05.2019
comment
Это ответ или вопрос? - person barbsan; 09.05.2019