Пример #1
0
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
Пример #2
0
    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
Пример #3
0
    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]
Пример #4
0
 def getRound(self):
     gameScreen = imageGrab()
     roundTemp = self.countHUD(self.cropRound(gameScreen),
                               self.roundTemplates)
     if roundTemp != -1:
         self.round = roundTemp
     return self.round
Пример #5
0
    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
Пример #6
0
    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
Пример #7
0
    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
Пример #8
0
    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
Пример #9
0
    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
Пример #10
0
    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
Пример #11
0
    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
Пример #12
0
 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
Пример #13
0
def on_release(key):

    if str(key) == '\'l\'':
        time.sleep(random.random() * 2 + 0.2)
        cropShop(imageGrab(), True)