Я разрабатываю бот-программу для старой онлайн-игры 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)
MRE. У нас есть белое фоновое изображение (bgcolor не имеет значения) с одним красным квадратом. . Затем мы сопоставляем с шаблоном 4 квадрата разного цвета (один из которых красный) с помощью цикла for и приказываем ему прервать работу, когда будет найдено совпадение. Как нам затем получить этот результат (красное совпадение) и использовать его? например, если совпадением был красный квадрат, сделайте что-нибудь
Подробнее здесь: https://stackoverflow.com/questions/792 ... -templates
Мобильная версия