Как сравнить результат нескольких шаблонов соответствия CV2?Python

Программы на Python
Ответить
Anonymous
 Как сравнить результат нескольких шаблонов соответствия CV2?

Сообщение Anonymous »

Привет, ребята, небольшой вопрос относительно соответствия шаблона CV2.
Я разрабатываю бот-программу для старой онлайн-игры MMORPG, и в рамках системы калибровки у меня есть 4 функции с целью нахождения каждой кардинальной точки. Все работает хорошо, однако я хочу добавить пятую функцию, которая получает текущую позицию.
Итак, она должна просто найти текущую ориентацию кардинальной точки на изображении компаса, сравнивая текущая позиция на этом изображении со списком шаблонов для каждой кардинальной точки.

Код: Выделить всё

 self.all_cardinals = [self.east_img,self.north_img,self.west_img,self.south_img]

def findcurrent(self):
for image in self.all_cardinals:
test_img = pyautogui.screenshot(region=(1249, 102, 22, 22))
test_img2 = cv2.cvtColor(np.array(test_img), cv2.COLOR_RGB2BGR)
result = cv2.matchTemplate(test_img2, image, method=cv2.TM_CCORR_NORMED, mask=image)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
threshold = 0.945
if max_val >= threshold:
break
else:
continue
Компас для поиска
Шаблон изображения для поиска
Теперь все это отлично работает в ощущение, что если персонаж в игре сталкивается с любой из 4 кардинальных точек, он выходит из цикла, однако я изо всех сил пытаюсь вывести этот результат и добавить его в оператор условия «если».
Например, если результат соответствует W кардинальная точка, затем выполните что-то вроде другой функции.
Или, если результат совпал с кардинальной точкой S, выполните что-нибудь еще .
Я размышлял об этом и пробовал несколько разных методов, таких как добавление возвращаемого изображения в функцию, которая возвращает мне трехмерный массив, и пытался сравнить это к исходному cv2.imread этого изображения.

Код: Выделить всё

east_img = cv2.imread('resources/findxy/facingeast.png')
east_test = Calibrate.findcurrent()
print(east_img == east_test)
Я получаю ValueError: операнды не могут быть переданы вместе с фигурами.
MRE. У нас есть белое фоновое изображение (bgcolor не имеет значения) с одним красным квадратом. . Затем мы сопоставляем с шаблоном 4 квадрата разного цвета (один из которых красный) с помощью цикла for и приказываем ему прервать работу, когда будет найдено совпадение. Как нам затем получить этот результат (красное совпадение) и использовать его? например, если совпадением был красный квадрат, сделайте что-нибудь

Подробнее здесь: https://stackoverflow.com/questions/792 ... -templates
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»