Хотелось бы повысить точность до 0,5-0,7. Мне нужно решить два случая:
Случай 1: найти всплывающую подсказку с белым текстом (и/или статическим изображением)
Основная проблема заключается в том, что всплывающая подсказка имеет полупрозрачный фон, поэтому может быть некоторый шум.Что я пробовал:
- Обрезать изображение – я знаю точные координаты на экране
- Использовать преобразование ребер Кэнни
- Различные методы сопоставления (кажется, между ними нет больших различий)
Мне нужно обнаружить значок дерева и\или текст

Обычный вариант:
Код: Выделить всё
def valid_target(self) -> bool:
# tree icon
tooltip_icon= cv2.imread(os.path.normpath(file_path), cv2.IMREAD_UNCHANGED)
haystack_cropped = self.screenshot[10:90,240:480]
result = cv2.matchTemplate(haystack_cropped, tooltip_icon, cv2.TM_CCOEFF_NORMED)
match_result = cv2.minMaxLoc(result)
return match_result[1] >= TOOLTIP_THRESHOLD
Код: Выделить всё
def valid_target(self) -> bool:
file_path = os.path.join(ROOT_DIR, self.tooltip_path)
tooltip_icon = cv2.imread(os.path.normpath(file_path), cv2.IMREAD_GRAYSCALE)
haystack_gray = cv2.cvtColor(self.screenshot, cv2.COLOR_BGR2GRAY)
haystack_cropped = haystack_gray[10:90,240:480]
tooltip_edges = cv2.Canny(tooltip_icon, 50, 200)
haystack_edges = cv2.Canny(haystack_cropped, 50, 200)
result = cv2.matchTemplate(tooltip_edges, haystack_edges, cv2.TM_CCORR_NORMED)
match_result = cv2.minMaxLoc(result)
return match_result[1] >= TOOLTIP_THRESHOLD
Случай 2: Найдите объект на скриншоте
Проблема здесь в том, что объекты могут изменить свою форму из-за вращения камеры. Я знаю о методе ORB, но не уверен, что он поможет.Подробнее здесь: https://stackoverflow.com/questions/798 ... e-matching
Мобильная версия