예제 #1
0
class ResultChecker:
    def __init__(self, pictureNumber):
        resultFileName = 'Results/Picture ' + str(pictureNumber) + '.txt'
        frameFileName = 'Frames/Picture ' + str(pictureNumber) + '.jpg'
        image = cv2.imread(frameFileName)
        self.geometricalImage = WorldImage()
        self.geometricalImage.buildMap(image)
        self.geometricalImage.updateRobotPosition(image)
        resultFile = open(resultFileName, 'r')
        centerOfMassLine = resultFile.readline()
        centerOfMassLine = centerOfMassLine[13:]
        self.centersOfMass = []
        xPosition = ""
        yPosition = ""
        isFirstNumber = True

        for character in centerOfMassLine:
            if character != '(' and character != ',' and character != ')':
                if isFirstNumber:
                    xPosition += character
                else:
                    yPosition += character

            if character == '(':
                isFirstNumber = True

            if character == ',':
                isFirstNumber = False

            if character == ')':
                self.centersOfMass.append((int(xPosition), int(yPosition)))
                xPosition = ""
                yPosition = ""

    def checkNumberOfShapesFound(self):
        shapeFound = 0
        for shape in self.geometricalImage.getMap().getShapesList():
            shapeCenterOfMassX, shapeCenterOfMassY = shape.findCenterOfMass()
            for centerOfMass in self.centersOfMass:
                if abs(shapeCenterOfMassX - centerOfMass[0]) < 10 and abs(
                        shapeCenterOfMassY - centerOfMass[1]) < 10:
                    shapeFound += 1
        if shapeFound != len(self.centersOfMass) or len(
                self.geometricalImage.getMap().getShapesList()) != len(
                    self.centersOfMass):
            print("Number of shapes found : " +
                  str(len(self.geometricalImage.getMap().getShapesList())))
            print("Number of real shapes found : " + str(shapeFound))
            print("Number of shapes present : " + str(len(self.centersOfMass)))
        return shapeFound, len(self.centersOfMass)

    def checkIfLimitFound(self):
        if self.geometricalImage.getMap().getMapLimit().getArea() < 1:
            print("Limit not found")

    def checkIfRobotFound(self):
        if self.geometricalImage.getMap().robot.square.getArea() < 1:
            print("Robot not found")
예제 #2
0
class ResultChecker:

    def __init__(self, pictureNumber):
        resultFileName = 'Results/Picture ' + str(pictureNumber) + '.txt'
        frameFileName = 'Frames/Picture ' + str(pictureNumber) + '.jpg'
        image = cv2.imread(frameFileName)
        self.geometricalImage = WorldImage()
        self.geometricalImage.buildMap(image)
        self.geometricalImage.updateRobotPosition(image)
        resultFile = open(resultFileName, 'r')
        centerOfMassLine = resultFile.readline()
        centerOfMassLine = centerOfMassLine[13:]
        self.centersOfMass = []
        xPosition = ""
        yPosition = ""
        isFirstNumber = True

        for character in centerOfMassLine:
            if character != '(' and character != ',' and character != ')':
                if isFirstNumber:
                    xPosition += character
                else:
                    yPosition += character

            if character == '(':
                isFirstNumber = True

            if character == ',':
                isFirstNumber = False

            if character == ')':
                self.centersOfMass.append((int(xPosition), int(yPosition)))
                xPosition = ""
                yPosition = ""

    def checkNumberOfShapesFound(self):
        shapeFound = 0
        for shape in self.geometricalImage.getMap().getShapesList():
            shapeCenterOfMassX, shapeCenterOfMassY = shape.findCenterOfMass()
            for centerOfMass in self.centersOfMass:
                if abs(shapeCenterOfMassX - centerOfMass[0]) < 10 and abs(shapeCenterOfMassY - centerOfMass[1]) < 10:
                    shapeFound += 1
        if shapeFound != len(self.centersOfMass) or len(self.geometricalImage.getMap().getShapesList()) != len(self.centersOfMass):
            print("Number of shapes found : " + str(len(self.geometricalImage.getMap().getShapesList())))
            print("Number of real shapes found : " + str(shapeFound))
            print("Number of shapes present : " + str(len(self.centersOfMass)))
        return shapeFound, len(self.centersOfMass)

    def checkIfLimitFound(self):
        if self.geometricalImage.getMap().getMapLimit().getArea() < 1:
            print("Limit not found")

    def checkIfRobotFound(self):
        if self.geometricalImage.getMap().robot.square.getArea() < 1:
            print("Robot not found")