def __init__(self): QThread.__init__(self) self.camera = CameraFixe() self.imageCount = 1 self.nombreDImage = 3 self.nombreDeForme = 4 self.localisationIles = LocalisationIle() self.localisationRobot = LocalisationRobot() self.localisationRepere = LocalisationRepere() self.afficheurImage = AfficheurImage() self.couleurCarreTrouvee = "" self.xPositionCarreTrouvee = 0 self.yPositionCarreTrouvee = 0 self.couleurTriangleTrouvee = "" self.xPositionTriangleTrouvee = 0 self.yPositionTriangleTrouvee = 0 self.couleurCercleTrouvee = "" self.xPositionCercleTrouvee = 0 self.yPositionCercleTrouvee = 0 self.couleurPentagoneTrouvee = "" self.xPositionPentagoneTrouvee = 0 self.yPositionPentagoneTrouvee = 0 self.xPositionRobotTrouvee = 0 self.yPositionRobotTrouvee = 0 self.carreIndex = 0 self.triangleIndex = 0 self.cercleIndex = 0 self.pentagoneIndex = 0 self.detectionIlesTimeout = 10 self.listeFormesThread = [] self.listeCouleursThread = [] self.listePositionsThread = [] self.positionRobotThread = [] self.time = None self.estVerouillee = False self.sauvegardePath = "C:\Users\phili_000\Desktop\Design 3\Design3\Code\Projet\photos\\table_iles_robot_MOD.jpg" self.photo = None self.reset = False
class DetectionEtAffichageThread(QThread): def __init__(self): QThread.__init__(self) self.camera = CameraFixe() self.imageCount = 1 self.nombreDImage = 3 self.nombreDeForme = 4 self.localisationIles = LocalisationIle() self.localisationRobot = LocalisationRobot() self.localisationRepere = LocalisationRepere() self.afficheurImage = AfficheurImage() self.couleurCarreTrouvee = "" self.xPositionCarreTrouvee = 0 self.yPositionCarreTrouvee = 0 self.couleurTriangleTrouvee = "" self.xPositionTriangleTrouvee = 0 self.yPositionTriangleTrouvee = 0 self.couleurCercleTrouvee = "" self.xPositionCercleTrouvee = 0 self.yPositionCercleTrouvee = 0 self.couleurPentagoneTrouvee = "" self.xPositionPentagoneTrouvee = 0 self.yPositionPentagoneTrouvee = 0 self.xPositionRobotTrouvee = 0 self.yPositionRobotTrouvee = 0 self.carreIndex = 0 self.triangleIndex = 0 self.cercleIndex = 0 self.pentagoneIndex = 0 self.detectionIlesTimeout = 10 self.listeFormesThread = [] self.listeCouleursThread = [] self.listePositionsThread = [] self.positionRobotThread = [] self.time = None self.estVerouillee = False self.sauvegardePath = "C:\Users\phili_000\Desktop\Design 3\Design3\Code\Projet\photos\\table_iles_robot_MOD.jpg" self.photo = None self.reset = False def __del__(self): self.wait() def run(self): global listeFormes global listeCouleurs global listePositions global repere global positionRobotTrouvee global orientationRobotTrouvee global ratioCMPixel while True: start = time.time() self.photo = None self.photo = self.camera.prendrePhoto() if(self.reset == True): self.reInitiliserVariables() self.reset = False if((not self.positionsIlesToutesTrouvee() or not self.couleurIlesToutesTrouvee()) and self.detectionIlesTimeout != 0): self.reInitiliserVariables() try: listeFormes, listeCouleurs, listePositions = self.localisationIles.trouverIles(self.photo) repere, ratioCMPixel = self.localisationRepere.trouverRepere(self.photo) self.listePositionsThread = listePositions self.listeCouleursThread = listeCouleurs self.listeFormesThread = listeFormes self.assignerIndexFormes() self.loadIlesDataTrouvee() except Exception as e: print e.message self.detectionIlesTimeout -= 1 self.sauvegarderImage(self.photo) if (self.detectionIlesTimeout == 0): self.detectionIlesTimeout = 10 self.imageCount += 1 continue try: positionRobotTrouvee, orientationRobotTrouvee = self.localisationRobot.trouverRobot(self.photo,ratioCMPixel) self.positionRobotThread.append(positionRobotTrouvee) except Exception: continue xPosRobot = positionRobotTrouvee[0] yPosRobot = positionRobotTrouvee[1] self.afficheurImage.afficherOrientationRobot(self.photo, (int(xPosRobot), int(yPosRobot)), int(orientationRobotTrouvee)) self.afficheurImage.afficherPositionRobot(self.photo, (int(xPosRobot), int(yPosRobot)), self.positionRobotThread) self.afficheurImage.afficherTrajectoire(self.photo, trajectoireCalculer) self.afficheurImage.afficherInformationsIle(self.photo, (self.listePositionsThread[self.carreIndex][0], self.listePositionsThread[self.carreIndex][1]), forme = self.listeFormesThread[self.carreIndex], couleur = self.listeCouleursThread[self.carreIndex]) self.afficheurImage.afficherInformationsIle(self.photo, (self.listePositionsThread[self.triangleIndex][0], self.listePositionsThread[self.triangleIndex][1]), forme = self.listeFormesThread[self.triangleIndex], couleur = self.listeCouleursThread[self.triangleIndex]) self.afficheurImage.afficherInformationsIle(self.photo, (self.listePositionsThread[self.cercleIndex][0], self.listePositionsThread[self.cercleIndex][1]), forme = self.listeFormesThread[self.cercleIndex], couleur = self.listeCouleursThread[self.cercleIndex]) self.afficheurImage.afficherInformationsIle(self.photo, (self.listePositionsThread[self.pentagoneIndex][0], self.listePositionsThread[self.pentagoneIndex][1]), forme = self.listeFormesThread[self.pentagoneIndex], couleur = self.listeCouleursThread[self.pentagoneIndex]) self.sauvegarderImage(self.photo) finish = time.time() deltaTime = finish - start time.sleep(2 - deltaTime) def positionsIlesToutesTrouvee(self): return self.xPositionCarreTrouvee != 0\ and self.yPositionCarreTrouvee != 0\ and self.xPositionTriangleTrouvee != 0\ and self.yPositionTriangleTrouvee != 0\ and self.xPositionCercleTrouvee != 0\ and self.yPositionCercleTrouvee != 0\ and self.xPositionPentagoneTrouvee != 0\ and self.yPositionPentagoneTrouvee != 0 def couleurIlesToutesTrouvee(self): return self.couleurCarreTrouvee != ""\ and self.couleurCercleTrouvee != ""\ and self.couleurTriangleTrouvee != ""\ and self.couleurPentagoneTrouvee != "" def assignerIndexFormes(self): for i in range(self.nombreDeForme - 1): self.carreIndex = listeFormes.index("carre") self.triangleIndex = listeFormes.index("triangle") self.cercleIndex = listeFormes.index("cercle") self.pentagoneIndex = listeFormes.index("pentagon") def loadIlesDataTrouvee(self): self.couleurCarreTrouvee = self.listeCouleursThread[self.carreIndex] self.xPositionCarreTrouvee = self.listePositionsThread[self.carreIndex][0] self.yPositionCarreTrouvee = self.listePositionsThread[self.carreIndex][1] self.couleurTriangleTrouvee = self.listeCouleursThread[self.triangleIndex] self.xPositionTriangleTrouvee = self.listePositionsThread[self.triangleIndex][0] self.yPositionTriangleTrouvee = self.listePositionsThread[self.triangleIndex][1] self.couleurCercleTrouvee = self.listeCouleursThread[self.cercleIndex] self.xPositionCercleTrouvee = self.listePositionsThread[self.cercleIndex][0] self.yPositionCercleTrouvee = self.listePositionsThread[self.cercleIndex][1] self.couleurPentagoneTrouvee = self.listeCouleursThread[self.pentagoneIndex] self.xPositionPentagoneTrouvee = self.listePositionsThread[self.pentagoneIndex][0] self.yPositionPentagoneTrouvee = self.listePositionsThread[self.pentagoneIndex][1] def reInitiliserVariables(self): self.couleurCarreTrouvee = "" self.xPositionCarreTrouvee = 0 self.yPositionCarreTrouvee = 0 self.couleurTriangleTrouvee = "" self.xPositionTriangleTrouvee = 0 self.yPositionTriangleTrouvee = 0 self.couleurCercleTrouvee = "" self.xPositionCercleTrouvee = 0 self.yPositionCercleTrouvee = 0 self.couleurPentagoneTrouvee = "" self.xPositionPentagoneTrouvee = 0 self.yPositionPentagoneTrouvee = 0 self.xPositionRobotTrouvee = 0 self.yPositionRobotTrouvee = 0 self.positionRobotTrouvee = (0,0) self.orientationRobotTrouvee = 0 self.carreIndex = 0 self.triangleIndex = 0 self.cercleIndex = 0 self.pentagoneIndex = 0 self.listeFormesThread = [] self.listeCouleursThread = [] self.listePositionsThread = [] self.positionRobotThread = [] def sauvegarderImage(self, photo): try: self.estVerouillee = True cv2.imwrite(self.sauvegardePath, photo) self.estVerouillee = False except Exception as e: print "Prob dans le sauvegarderImage: {0}".format(e.message) finally: self.estVerouillee = False