def testCourant2(self):
     MonImage = ImageDune.ImageDune()
     MonImage.AttribuerImage(NomImage1)
     MonImage.setSensCourantGauche(False)
     self.assertEqual(
         MonImage.getSensCourantGauche(), False,
         "Echec - le sens du courant doit être modifié (vers la droite)")
    def testResolutionImage2(self):
        CheminImage = NomImage2
        MonImage = ImageDune.ImageDune()
        MonImage.AttribuerImage(CheminImage)

        self.assertEqual(MonImage.getResolutionAltitude(),
                         self.CalculResolutionImage(CheminImage, MonImage),
                         "Echec déterminé résolution 2")
 def testAltitudeMinimumImage2(self):
     MonImage = ImageDune.ImageDune()
     MonImage.AttribuerImage(NomImage2)
     self.assertEqual(MonImage.getAltitudeMin(), 5.548,
                      "Echec récupération altitude minimum 2")
 def testAltitudeMinimumImage1(self):
     MonImage = ImageDune.ImageDune()
     MonImage.AttribuerImage(NomImage1)
     self.assertEqual(MonImage.getAltitudeMin(), 1.95,
                      "Echec récupération altitude minimum 1")
 def testCheminImage(self):
     MonImage = ImageDune.ImageDune()
     MonImage.AttribuerImage(NomImage1)
     self.assertEqual(MonImage.getCheminImage(), NomImage1,
                      "Echec du nom de l'image")
 def testLargeurImage(self):
     MonImage = ImageDune.ImageDune()
     MonImage.AttribuerImage(NomImage1)
     Largeur = Image.open(NomImage1).size[0]
     self.assertEqual(MonImage.getLargeurImage(), Largeur,
                      "Echec récupération de de largeur de l'image")
 def testHauteurImage(self):
     MonImage = ImageDune.ImageDune()
     MonImage.AttribuerImage(NomImage1)
     Hauteur = Image.open(NomImage1).size[1]
     self.assertEqual(MonImage.getHauteurImage(), Hauteur,
                      "Echec récupération de l'hauteur de l'image")
 def testImageDuneValide5(self):
     MonImage = ImageDune.ImageDune()
     ImageValide = MonImage.AttribuerImage(NomImageExistePas)
     self.assertEqual(ImageValide, False, "Echec Test image 5")
 def testImageDuneValide4(self):
     MonImage = ImageDune.ImageDune()
     ImageValide = MonImage.AttribuerImage(NomImageIncomplet)
     self.assertEqual(ImageValide, False, "Echec Test image 4")
 def testImageDuneValide3(self):
     MonImage = ImageDune.ImageDune()
     ImageValide = MonImage.AttribuerImage(NomImageEchec)
     self.assertEqual(ImageValide, False, "Echec Test image 3")
 def testImageDuneValide2(self):
     MonImage = ImageDune.ImageDune()
     ImageValide = MonImage.AttribuerImage(NomImage2)
     self.assertEqual(ImageValide, True, "Echec Test image 2")
 def testCourant1(self):
     MonImage = ImageDune.ImageDune()
     MonImage.AttribuerImage(NomImage1)
     self.assertEqual(
         MonImage.getSensCourantGauche(), True,
         "Echec - par défaut le sens du courant est vers la gauche")
Exemplo n.º 13
0
    def __init__(self, fenetre):
        Frame.__init__(self, fenetre)
        self.pack(fill=BOTH)

        self.MonImage = ImageDune.ImageDune()
        self.LesAxes = GestionAxes.GestionAxes()

        self.ResolutionAltitude = 0  # La résolution de l'altitude de l'image → différence d'altitude (cm) entre 2 niveaux de gris
        self.ImageAffiche = 0
        self.PrecedentChoixResolutionImage = ""  # Sauvegarder le précédent choix dans la comboBox, pour éventuellement le remettre (si l'utilisateur annule sont nouveau choix de résolution d'affichage de l'image)

        self.DessinPoint = [
        ]  # Garder une référence sur l'ensemble des points tracés (pour en permettre leur suppression)
        self.DessinLigne = [
        ]  # Garder une référence de l'ensemble des tracés (axes) effectués

        self.CourantVersLaGauche = True  # Cette variable permet de savoir le sens de lecture du courant (par défaut vers la gauche → donnée cliente)

        # Création d'une sous frame pour placer correctement les divers éléments sur la moitié gauche de la fenêtre
        FrameMenu = Frame(self)
        FrameMenu.pack(side=LEFT, fill=BOTH, expand=1)

        # Création de nos widgets
        Button(FrameMenu,
               text='Charger image',
               command=lambda: self.ChargerImage()).pack(side=TOP)

        FrameInfoImage = Frame(FrameMenu)
        FrameInfoImage.pack(side=TOP)

        Label(FrameInfoImage,
              text="Seuil détection des petites dunes").grid(row=0, column=0)
        # L'intervalle de choix de seuil de détection des petites dunes est un entier entre 0 et 100 (par défaut 10)
        self.SeuilDetectionPetiteDune = Spinbox(FrameInfoImage,
                                                from_=0,
                                                to=100,
                                                width=10)
        self.SeuilDetectionPetiteDune.grid(row=0, column=1)
        self.SeuilDetectionPetiteDune.delete(
            0
        )  # On enlève la valeur par défaut dans la Spinbox (qui est de base la valeur minimum)
        self.SeuilDetectionPetiteDune.insert(
            0,
            "10")  # On place maintenant la valeur 10 comme valeur par défaut
        # pour récupérer la valeur de la Spinbox, il suffit de faire SeuilDetectionPetiteDune.get()
        Label(FrameInfoImage, text="cm").grid(row=0, column=2)

        Label(FrameInfoImage,
              text="Seuil détection des grandes dunes").grid(row=1, column=0)
        # L'intervalle de choix de seuil de détection des grandes dunes est un entier entre 0 et 100 (par défaut 50)
        self.SeuilDetectionGrosseDune = Spinbox(FrameInfoImage,
                                                from_=0,
                                                to=100,
                                                width=10)
        self.SeuilDetectionGrosseDune.grid(row=1, column=1)
        self.SeuilDetectionGrosseDune.delete(
            0
        )  # On enlève la valeur par défaut dans la Spinbox (qui est de base la valeur minimum)
        self.SeuilDetectionGrosseDune.insert(
            0,
            "50")  # On place maintenant la valeur 50 comme valeur par défaut
        # pour récupérer la valeur de la Spinbox, il suffit de faire SeuilDetectionGrosseDune.get()
        Label(FrameInfoImage, text="cm").grid(row=1, column=2)

        Label(FrameInfoImage, text="Sens du courant").grid(row=2, column=0)
        self.ChoixSensCourant = ttk.Combobox(FrameInfoImage, state="readonly")
        self.ChoixSensCourant['values'] = ("Vers la gauche", "Vers la droite")
        self.ChoixSensCourant.set("Vers la gauche")
        self.ChoixSensCourant.grid(row=2, column=1, columnspan=2)
        self.ChoixSensCourant.bind("<<ComboboxSelected>>",
                                   lambda event: self.ChoisirSensCourant())

        self.BoutonDupliquerAxe = Button(FrameMenu,
                                         text="Dupliquer axe",
                                         state=DISABLED,
                                         command=lambda: self.DupliquerAxe())
        self.BoutonDupliquerAxe.pack(side=TOP)
        self.BoutonSupprimerDernierElement = Button(
            FrameMenu,
            text="Supprimer dernier axe / point",
            state=DISABLED,
            command=lambda: self.SupprimerDernierAxeOuPoint())
        self.BoutonSupprimerDernierElement.pack(side=TOP)
        self.BoutonSupprimerAxes = Button(FrameMenu,
                                          text="Supprimer axe(s)",
                                          state=DISABLED,
                                          command=lambda: self.SupprimerAxes())
        self.BoutonSupprimerAxes.pack(side=TOP)

        self.BoutonTraitementAxes = Button(
            FrameMenu,
            text="Traitement axe(s)",
            state=DISABLED,
            command=lambda: self.TraitementAxes())
        self.BoutonTraitementAxes.pack(side=TOP)
        self.BoutonTraitementImage = Button(
            FrameMenu,
            text="Traitement image",
            state=DISABLED,
            command=lambda: self.TraitementImage())
        self.BoutonTraitementImage.pack(side=TOP)

        self.BoutonCoupure = Button(FrameMenu,
                                    text="Coupure Image",
                                    state=DISABLED,
                                    command=lambda: self.CoupureImage())
        self.BoutonCoupure.pack(side=TOP)

        FrameImage = Frame(self)
        FrameImage.pack(side=RIGHT, fill=BOTH, expand=1)

        FrameResolutionImage = Frame(FrameImage)
        FrameResolutionImage.pack(side=TOP)

        Label(FrameResolutionImage,
              text="Résolution maximum d'affichage de l'image").pack(side=LEFT)

        self.ChoixResolutionImage = ttk.Combobox(FrameResolutionImage,
                                                 state="readonly")
        self.ChoixResolutionImage['values'] = ("854 x 480", "1280 x 720",
                                               "1920 x 1080", "Natives")
        self.PrecedentChoixResolutionImage = "1280 x 720"
        self.ChoixResolutionImage.set(self.PrecedentChoixResolutionImage)
        self.ChoixResolutionImage.pack(side=RIGHT)
        self.ChoixResolutionImage.bind("<<ComboboxSelected>>",
                                       lambda event: self.AffichageImage())

        self.Canevas = Canvas(FrameImage)
        self.Canevas.create_image(
            0, 0, anchor=NW
        )  # Règle l'emplacement du milieu de l'image, ici dans le coin Nord Ouest (NW) de la fenetre
        self.Canevas.configure(cursor="crosshair")
        self.Canevas.bind("<Button-1>", self.PlacementPoint)
        self.Canevas.pack(side=RIGHT, fill=BOTH, expand=1)
Exemplo n.º 14
0
    def Calcul(self, event):
        PositionX = event.x
        PositionY = event.y

        x, y = self.coupure.coordonnees(PositionX, PositionY)
        self.DessinPoint.append(Point.Point(x, y))

        self.PointsCanvas.append(
            self.Canevas.create_oval(x - 1, y - 1, x + 1, y + 1, fill="red"))

        size = len(self.DessinPoint)
        if (size > 1):
            self.LignesCanvas.append(
                self.Canevas.create_line(
                    self.DessinPoint[size - 2].getCoordonnees(),
                    self.DessinPoint[size - 1].getCoordonnees(),
                    fill="red"))
        if (size == 2):
            xTemp1, yTemp1 = self.DessinPoint[0].getCoordonnees()
            xTemp2, yTemp2 = self.DessinPoint[1].getCoordonnees()
            if (xTemp1 == xTemp2):
                self.b = True
            else:
                self.b = False

        if (size == 3):
            x1, y1 = self.DessinPoint[0].getCoordonnees()
            x2, y2 = self.DessinPoint[2].getCoordonnees()

            if (self.b):
                self.DessinPoint.append(Point.Point(x2, y1))
                self.PointsCanvas.append(
                    self.Canevas.create_oval(x2 - 1,
                                             y1 - 1,
                                             x2 + 1,
                                             y1 + 1,
                                             fill="red"))
            else:
                self.DessinPoint.append(Point.Point(x1, y2))
                self.PointsCanvas.append(
                    self.Canevas.create_oval(x1 - 1,
                                             y2 - 1,
                                             x1 + 1,
                                             y2 + 1,
                                             fill="red"))
            self.LignesCanvas.append(
                self.Canevas.create_line(self.DessinPoint[3].getCoordonnees(),
                                         self.DessinPoint[0].getCoordonnees(),
                                         fill="red"))
            self.LignesCanvas.append(
                self.Canevas.create_line(self.DessinPoint[2].getCoordonnees(),
                                         self.DessinPoint[3].getCoordonnees(),
                                         fill="red"))
            imageResultat = []

            xMin = 0
            xMax = 0
            yMin = 0
            yMax = 0

            if (y1 < y2):
                yMin = y1
                yMax = y2
            else:
                yMin = y2
                yMax = y1

            #print(x1, x2, yMin, yMax)

            while (yMin <= yMax):
                imageResultat.append([])
                size = len(imageResultat)
                if (x1 < x2):
                    xMin = x1
                    xMax = x2
                else:
                    xMin = x2
                    xMax = x1
                while (xMin <= xMax):
                    imageResultat[size - 1].append(
                        self.monImageListe[yMin][xMin])
                    xMin += 1
                yMin += 1

            ImageAEnvoyee = ImageDune.ImageDune()
            ImageAEnvoyee.setImage(imageResultat)
            ImageAEnvoyee.setResolution(self.resolution)
            fenTraitementImage = Toplevel()
            fenTraitementImage.title(
                "Demande des données - Analyse dunes 2018")
            CalculLPE.CalculLPE(fenTraitementImage, ImageAEnvoyee,
                                self.miniature, self.seuilDetection, True)