Команда PyAutoGUI locate возвращает неверные координаты для распознавания изображений

Я пытаюсь использовать pyautogui.locateCenterOnScreen(), чтобы найти точную точку изображения на экране, но всякий раз, когда возвращаются координаты, кажется, что они всегда больше в два раза (т.е. дает (2026, 722), но на самом деле (1013, 361)). Я использую Macbook Pro 2016 с дисплеем Retina под управлением macOS Sierra. Любые предложения, как решить эту проблему? Заранее спасибо.

Снимок экрана с результатами распознавания

Изображение для размещения на экране

Надеюсь, этот скриншот поможет в решении моей проблемы.


person D.Vious    schedule 25.04.2017    source источник


Ответы (5)


Pyautogui использует снимки экрана, чтобы определить расположение объектов на экране. Проблема на компьютерах Mac с дисплеем Retina заключается в том, что вывод на экран имеет удвоенное количество пикселей, чтобы использовать преимущества большей плотности пикселей системы для более четкого изображения. Поэтому, когда вы делаете снимок экрана, вы получаете изображение, содержащее удвоенное число пикселей. пикселей, чем то же изображение с Mac без Retina. В настоящее время я изучаю, можно ли изменить размер изображения и при этом найти совпадение (один пиксель отключен, и нет совпадения, если не использовать нечеткий поиск cv2) источник

person kschnack    schedule 22.12.2017
comment
По какой-то причине это работает очень хорошо, однако в некоторых случаях это не работает. Вы можете помочь? Спасибо. - person ; 06.11.2020

По какой-то причине моему Macbook m1 не понравились эти ответы, поэтому вот что я придумал.

position2 = position[0]/2, position[1]/2, position[2]/2, position[3]/2
pyautogui.moveTo(position2)
pyautogui.click()
person Aaron Cloud    schedule 17.05.2021
comment
это здорово спасибо - person mmz; 04.06.2021

Скорее всего, это не та проблема, которую можно исправить, посмотрев код или модуль, который вы используете. Скорее всего, проблема в том, что ВЫ что-то неправильно интерпретируете.

Если вы предоставите скриншот и изображение, которое хотите найти на нем, будет намного проще помочь без необходимости угадывать.

person Claudio    schedule 27.04.2017
comment
Привет, я отредактировал и добавил скриншоты. Надеюсь, это может помочь. Спасибо - person D.Vious; 28.04.2017

У меня тоже такая проблема с макбуком. Я могу только думать, что это связано с MacBook и тем, как он отправляет информацию об экране.

В качестве обходного пути я просто делил координаты на 2.

person Ryan    schedule 03.08.2017

person    schedule
comment
Это поможет, если вы дадите небольшое объяснение, почему это решение - person Pullie; 07.05.2020