#python #opencv #pyautogui
Вопрос:
OpenCV имеет функцию cv2.minMaxLoc(). Эта функция позволяет вам возвращать значение max_val, которое является пикселем, наилучшим образом соответствующим любому изображению, которое вы ищете.
Вы можете распечатать(max_val), чтобы увидеть, насколько близко соответствует вашему изображению на самом деле, даже если оно не найдет совпадения, оно все равно вернет ближайшее возможное совпадение в виде десятичной дроби.
В pyautogui есть документация, в которой показано, что вы можете использовать параметр уверенности, если установлен OpenCV, что похоже на то, как работает сопоставление порогов с OpenCV.
Есть ли эквивалент для pyautogui? Кажется, я не могу его найти.
Комментарии:
1. Я не думаю, что pyautogui еще предлагает это. Вам нужна функция, которая выполняет сопоставление и дает вам оценку, верно? Я предполагаю, что для pyautogui они используют один из режимов соответствия нормализованному шаблону и minMaxLoc. Для
TM_CCORR_NORMED
иTM_CCOEFF_NORMED
вы получаете числа от 0 до 1. Почему бы не использовать функции OpenCV?2. Я пытался придерживаться pyautogui для этого проекта, это достаточно легко сделать в OpenCV. Просто проект блокировки, все остальное пока работает и пишется в pyautogui. На самом деле, это для функции ведения журнала, которую я создаю. Любое найденное изображение записывается в текстовый файл с указанием его местоположения, я хотел добавить в журнал значение уверенности, с которым оно было найдено. Я могу попытаться просто использовать значение OpenCV, но тогда я думаю, что мне нужно использовать OpenCV для сопоставления, а не pyautogui, что означает некоторое переписывание!
Ответ №1:
Я посмотрел в исходном коде, и там нет параметра уверенности без pyautogui
использования OpenCV. pyscreeze
для всех функций поиска. pyscreeze
автоматически определяет, установлен ли OpenCV. Если он установлен, он вызывает cv2.matchTemplate
, используя режим cv2.TM_CCOEFF_NORMED
соответствия. Если они не установлены, они используют свою собственную функцию ( _locateAll_python
), которую я не до конца понимаю, но я думаю, что она идеально подходит (уверенность 1.000000…)
Если вы не возражаете против зависимости OpenCV, но просто не хотите, чтобы код напрямую вызывал OpenCV, вы можете либо
- поговорите с сопровождающим об изменении
_locateAll_opencv
в pyscreeze, чтобы вернуть реальную уверенность
или
- взломайте свою собственную локальную копию
pyscreeze
, чтобы она вернула реальную уверенность.
Комментарии:
1. Думаю, я просто позвоню в OpenCV. Если pyautogui использует matchTemplate, если установлен OpenCV (это так), конечно, это означает, что я могу вызвать cv2.minMaxLoc() без необходимости переписывать свой код? Не за моим столом прямо сейчас, чтобы проверить!
Ответ №2:
По словам либханта :
Альтернативы PyAutoGUI и аналогичные пакеты
- Селен. 9,8 9,9 Л2 Автогуй ПРОТИВ Селена. Платформа и экосистема автоматизации браузера.
- саранча. 9.5 9.4 L3 Пятоги ПРОТИВ саранчи. Масштабируемый инструмент нагрузочного тестирования пользователей, написанный на Python.
- осколок. 7.1 8.1 L5 PyAutoGUI ПРОТИВ осколка. …
- sixpack. 6.1 0.0 L4 PyAutoGUI ПРОТИВ sixpack
Вот ссылка : https://python.libhunt.com/pyautogui-alternatives
Комментарии:
1. Прошу прощения! Я искал аналогичную функциональность в pyautogui, а не другой пакет вместе взятый!