PyAutoGUI Image Recognition - небольшая проблема с подбором цветов пикселей

Я пытаюсь остановить возможный блок в моей программе бота, используя функцию распознавания изображений PyAutoGUI (pyautogui.locateCenterOnScreen) распознать простую кнопку "ОК", чтобы избавиться от возможного сообщения об ошибке блока. Однако, как я выяснил, эта функция работает только иногда, снимая скриншоты с разных сообщений об ошибках и сравнивая цвет пикселя рядом. В результате я обнаружил, что цвет пикселя на двух разных кнопках "ОК" обычно отключается на 1, что объясняет возвращение функции распознавания изображения None большую часть времени. Я хотел бы иметь возможность распознавать изображение, даже если цвет отключен на 1 или 2 пикселя. Я понимаю, что есть tolerance аргумент ключевого слова, но положение кнопки изменяется на экране, что затрудняет использование getpixel функция, и вы не можете использовать tolerance с locateCenterOnScreen(в моем понимании). Будут ли какие-либо предложения относительно того, как я могу справиться с этой проблемой? Заранее спасибо.

1 ответ

Решение

Попробуйте это ниже (см. Здесь: http://pyautogui.readthedocs.io/en/latest/screenshot.html)

введите описание изображения здесь

Из комментария я знаю, что вы попробовали это, и это не решило проблему в вашем случае.

Другая идея, которая может помочь, - это когда вы обрезаете изображение кнопки до абсолютного минимума, необходимого для его поиска на экране. Обычно цвета около центра более стабильны, чем тени.

Из комментария я знаю, что это не решило и вашу проблему.

Разрешаете ли вы использовать TRANSPARENCY для Windows в вашей ОС (прозрачность - это когда вы можете "видеть" то, что текущее приложение отображает в фоновом режиме окна этого приложения) - это функция, которая является значением по умолчанию во многих версиях новейших операционных систем.)?

Из комментария я знаю, что вы делаете.

Это может привести к серьезным проблемам распознавания. Снижение (до какого уровня?) Прозрачности не решило проблему, что означает, что единственный правильный путь - это:

Отключите функцию прозрачности, чтобы получить стабильные цвета

Вот и все - проблема решена (как это сделать для вашей конкретной системы - это еще один вопрос, не связанный с темой распознавания изображений).

Все или одно из вышеперечисленного должно решить вашу проблему, и если нет, то вы, вероятно, будете вынуждены сделать собственное распознавание изображения, используя другие инструменты обработки изображений рядом с pyautogui ,

ДОБАВЛЕНИЕ: форма и цвет кнопки [ОК] могут зависеть от многих вещей. Если отображается в интернет-браузере, он может изменить свой размер с изменением размера страницы. Если пользовательский диалог создается разными приложениями, форма и цвет кнопки [OK] также могут быть разными, если приложение не использует системные стандарты. И, как сказано выше, цвета могут отличаться, если система использует функцию прозрачности.

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