Another color check after finding items (#92)

This commit is contained in:
aeon0
2021-11-23 15:12:55 +01:00
committed by GitHub
parent f965c36464
commit 7e2c8df8db
2 changed files with 18 additions and 8 deletions
+2 -1
View File
@@ -120,6 +120,7 @@ class IChar:
def _pre_buff_cta(self):
# save current skill img
wait(0.1)
skill_before = cut_roi(self._screen.grab(), self._config.ui_roi["skill_right"])
keyboard.send(self._char_config["weapon_switch"])
wait(0.28, 0.35)
@@ -132,7 +133,7 @@ class IChar:
mouse.click(button="right")
wait(self._cast_duration + 0.08, self._cast_duration + 0.1)
keyboard.send(self._char_config["weapon_switch"])
wait(0.25, 0.3)
wait(0.28, 0.35)
# Make sure that we are back at the previous skill
skill_after = cut_roi(self._screen.grab(), self._config.ui_roi["skill_right"])
_, max_val, _, _ = cv2.minMaxLoc(cv2.matchTemplate(skill_after, skill_before, cv2.TM_CCOEFF_NORMED))
+16 -7
View File
@@ -6,7 +6,7 @@ import os
from dataclasses import dataclass
import math
from config import Config
from utils.misc import color_filter
from utils.misc import color_filter, cut_roi
@dataclass
@@ -134,12 +134,21 @@ class ItemFinder:
item = None
else:
max_loc = [max_loc[0] + x, max_loc[1] + y]
item = Item()
item.center = (int(max_loc[0] + int(template.data.shape[1] * 0.5)), int(max_loc[1] + int(template.data.shape[0] * 0.5)))
item.name = key
item.score = max_val
center_abs = (item.center[0] - (inp_img.shape[1] // 2), item.center[1] - (inp_img.shape[0] // 2))
item.dist = math.dist(center_abs, (0, 0))
# Do another color hist check with the actuall found item template
cropped_roi = [*max_loc, template.data.shape[1], template.data.shape[0]]
cropped_item = cut_roi(filtered_img, cropped_roi)
grayscale = cv2.cvtColor(cropped_item, cv2.COLOR_BGR2GRAY)
_, mask = cv2.threshold(grayscale, 0, 255, cv2.THRESH_BINARY)
hist = cv2.calcHist([cropped_item], [0, 1, 2], mask, [8, 8, 8], [0, 256, 0, 256, 0, 256])
hist_result = cv2.compareHist(template.hist, hist, cv2.HISTCMP_CORREL)
same_type = hist_result > 0.65 and hist_result is not np.inf
if same_type:
item = Item()
item.center = (int(max_loc[0] + int(template.data.shape[1] * 0.5)), int(max_loc[1] + int(template.data.shape[0] * 0.5)))
item.name = key
item.score = max_val
center_abs = (item.center[0] - (inp_img.shape[1] // 2), item.center[1] - (inp_img.shape[0] // 2))
item.dist = math.dist(center_abs, (0, 0))
if item is not None and self._config.items[item.name]:
item_list.append(item)
elapsed = time.time() - start