Есть ли эквивалент cv2.minMaxLoc в pyautogui?

#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, вы можете либо

  1. поговорите с сопровождающим об изменении _locateAll_opencv в pyscreeze, чтобы вернуть реальную уверенность

или

  1. взломайте свою собственную локальную копию 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, а не другой пакет вместе взятый!