def detectOffset(): offsetTemplate = cv2.imread("../Header Texts/F.jpg") template = [("F", offsetTemplate)] img = imageGrab(845, 750, 75, 150, 0, 0) if img is None: return (None, None) img_cv = cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR) hits = MTM.matchTemplates(template, img_cv, method=cv2.TM_CCOEFF_NORMED, N_object=float("inf"), score_threshold=0.9, maxOverlap=0, searchBox=None) if len(hits['TemplateName']) != 1: return -1, -1 else: x, y, _, _ = hits['BBox'].iloc[0] print(hits['BBox'].iloc[0]) x_offset = x - 16 y_offset = y - 22 print(x_offset, y_offset) return x_offset, y_offset
def labelShop(self): imageList = self.cropShop(imageGrab(), save=False) value, inspect = self.predict(imageList) classes = self.getClasses() statesList = [] for i, img in enumerate(inspect): state = img.item() if (value[i] < 0.99): imageList[i].save("../WIP/" + classes[state] + str(datetime.now()).replace(":", "") + ".jpg") if (value[i] <= 0.5): # No idea what the f**k this is, paint red imageList[i] = self.red statesList.append(len(classes) - 1) elif state == len(classes) - 1: # Slot appears empty xnull, paint it gray imageList[i] = self.gray statesList.append(state) else: statesList.append(state) # print("Position %d:" % i, "Label: %s" % classes[state], "Confidence: %f" % value[i]) return imageList, classes, value, inspect, statesList
def getHUD(self): # Capture screen once, and crop it as needed gameScreen = imageGrab() goldTemp = self.countHUD(self.cropGold(gameScreen), self.goldTemplates) healthTemp = self.countHUD(self.cropHealth(gameScreen), self.healthTemplates) unitsTemp = self.countHUD(self.cropUnit(gameScreen), self.unitTemplates) currExpTemp, poolExpTemp = self.countEXP(self.cropEXP(gameScreen)) if goldTemp != -1: self.gold = goldTemp if healthTemp != -1: self.health = healthTemp if unitsTemp != -1: self.units = unitsTemp if currExpTemp != -1: self.currExp = currExpTemp self.poolExp = poolExpTemp # allImage = self.cropHUD(gameScreen) return [self.gold, self.health, self.units, self.currExp, self.poolExp]
def getRound(self): gameScreen = imageGrab() roundTemp = self.countHUD(self.cropRound(gameScreen), self.roundTemplates) if roundTemp != -1: self.round = roundTemp return self.round
def detectGameEnd(self): gameScreen = imageGrab() placeCrop = gameScreen.crop((155, 260) + (350, 420)) # placeCrop.show() placePhase = self.detectPhase(placeCrop, self.placeTemplates) if placePhase is not None: return placePhase return -1
def checkItems(self): gameScreen = imageGrab() items = self.cropItems(gameScreen) itemList = [] for item in items: itemName = self.detectItem(item) itemList.append(itemName) # print("Item: %s" % itemName) return itemList
def checkUnderlords(self): gameScreen = imageGrab() underlords = self.cropUnderlords(gameScreen) underlordsList = [] for underlord in underlords: underlordName = self.detectUnderlord(underlord) underlordsList.append(underlordName) # print("Item: %s" % underlordName) # print(underlordsList) return underlordsList
def getClockTimeLeft(self, imageCrop=None): # gameScreen = imageGrab() # print(self.offsetY) if imageCrop is None: clockImg = imageGrab(550, 10, 50, 56, self.offsetX, self.offsetY) else: clockImg = imageCrop.crop( (550, 10, 550 + 50 + self.offsetX, 10 + 56 + self.offsetY)) self.clock = self.countHUD(clockImg, self.clockTemplates) return self.clock
def freeReroll(self): gameScreen = imageGrab() crop = gameScreen.crop((880, 140) + (975, 185)) img_cv = cv2.cvtColor(numpy.asarray(crop), cv2.COLOR_RGB2BGR) hits = MTM.matchTemplates(self.freeRerollIcon, img_cv, method=cv2.TM_CCOEFF_NORMED, N_object=float("inf"), score_threshold=0.9, maxOverlap=0, searchBox=None) if len(hits['TemplateName']) > 0: return True return False
def findItemListOffset(self): gameScreen = imageGrab() imageToSearch = gameScreen.crop((940, 170) + (1010, 400)) img_cv = cv2.cvtColor(numpy.asarray(imageToSearch), cv2.COLOR_RGB2BGR) hits = MTM.matchTemplates(self.itemPlacementTemplate, img_cv, method=cv2.TM_CCOEFF_NORMED, N_object=float("inf"), score_threshold=0.55, maxOverlap=0, searchBox=None) if len(hits['TemplateName']) > 0: _, y_offset, _, _ = hits['BBox'].iloc[0] return y_offset return None
def shopOpen(self, imageCrop=None): if imageCrop is None: gameScreen = imageGrab() crop = gameScreen.crop((885, 20) + (925, 110)) else: crop = imageCrop.crop((885, 20, 925, 110)) img_cv = cv2.cvtColor(numpy.asarray(crop), cv2.COLOR_RGB2BGR) hits = MTM.matchTemplates(self.storeIconTemplates, img_cv, method=cv2.TM_CCOEFF_NORMED, N_object=1, score_threshold=0.9, maxOverlap=0, searchBox=None) if "open" in hits['TemplateName'].iloc[0]: return True return False
def getPhase(self): # print(self.yoffset) combatCrop = imageGrab(505, 6, 40, 26, self.xoffset, self.yoffset) # combatCrop.show() combatPhase = self.detectPhase(combatCrop, self.combatTemplates) return combatPhase
def on_release(key): if str(key) == '\'l\'': time.sleep(random.random() * 2 + 0.2) cropShop(imageGrab(), True)