IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Comparaison Image Python [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2017
    Messages : 24
    Par défaut Comparaison Image Python
    Bonjour,

    J'ai ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    from tkinter import *
    import tkinter.messagebox
    import tkinter.filedialog
    from PIL import Image
    import sys, os
     
     
    def Ouvrir():
        filename = tkinter.filedialog.askopenfilename(title="Ouvrir une image",filetypes=[('all files','.*')])
        print(filename)
     
        photo = PhotoImage(file=filename)
        gifdict[filename] = photo
        print(gifdict)
     
        Canevas.create_image(0,0,anchor=NW,image=photo)
        Canevas.config(height=photo.height(),width=photo.width())
     
        fenetre.title("Image "+str(photo.width())+" x "+str(photo.height()))
     
    def Fermer():
        Canevas.delete(ALL)
        fenetre.title("Comparate PlateNumber")
     
    def compare(file1, file2):
        image1 = Image.open(file1)
        image2 = Image.open(file2)
        h1 = image1.histogram()
        h2 = image2.histogram()
        rms = math.sqrt(reduce(operator.add,
                               map(lambda a,b: (a-b)**2, h1, h2))/len(h1))
        return rms
     
     
     
    fenetre = Tk()
    fenetre.title("Image")
     
    menubar = Menu(fenetre)
     
     
     
    menufichier = Menu(menubar,tearoff=0)
    menufichier.add_command(label="Ouvrir une image",command=Ouvrir)
    menufichier.add_command(label="Fermer l'image",command=Fermer)
    menufichier.add_command(label="Quitter",command=fenetre.destroy)
    menubar.add_cascade(label="Fichier", menu=menufichier)
    fenetre.config(menu=menubar)
     
    label = Label(fenetre, text="Plaque Auto")
    label.pack()
    bouton = Checkbutton(fenetre, text="Luigi")
    bouton.pack()
    bouton = Checkbutton(fenetre, text="Corentin")
    Button(fenetre, text = 'Comparer', command=compare("img1.png",)?).pack(side=LEFT, padx=5, pady=5)
    bouton.pack()
     
    photo = PhotoImage(file="img1.png")
    zone_dessin = canvas = Canvas(fenetre,width=600, height=150, borderwidth=8)
    zone_dessin.create_image(300,65,image=photo)
    canvas.pack()
     
    Canevas = Canvas(fenetre)
    Canevas.pack(padx=5,pady=5)
     
    gifdict={}
    fenetre.mainloop()
    Je n'arrive pas à récupérer le fichier que j'ouvre pour pouvoir le comparer avec l'autre.
    Je ne sais pas comment définir l'image ouverte en tant que paramètre de la fonction compare.
    Pourriez-vous m'aidez ?

  2. #2
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Voir https://python.developpez.com/faq/?p...ee-a-un-Button pour la command du button.

    En ce qui concerne la transmission, le plus simple pour le moment serait de passer le chemin du fichier dans une variable globale dans ta fonction ouvrir, et de ne pouvoir utiliser le bouton que lorsque cette variable contient quelque chose.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Ouvrir et comparer sont des (sortes de) fonctions.
    Lorsqu'Ouvrir se termine, la variable filename est détruite (et inaccessible à compare): il faut en faire une variable globale.
    A partir de là, çà ne sert à rien de vouloir passer çà en "paramètre".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2017
    Messages : 24
    Par défaut Merci
    Merci pour votre réponse, je vais essayer tous ça et je vous recontacterais.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2017
    Messages : 24
    Par défaut Aide
    J'ai donc essayer ce que l'on m'avait dis mais je ne réussi pas à faire appel à cette variable.
    Je pense avoir presque finis mon programme donc si vous pouviez m'aider ....
    Merci

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par nono9196 Voir le message
    J'ai donc essayer ce que l'on m'avait dis mais je ne réussi pas à faire appel à cette variable.
    Si vous ne montrez pas ce que vous avez essayé de faire, pas facile de savoir ce que vous n'avez pas compris. Au cas où la lecture de quelques pages d'un tuto. sur les variables locales et globales....

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2017
    Messages : 24
    Par défaut Excusez-moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    from tkinter import *
    import ctypes
    import tkinter.filedialog
    from PIL import Image
    import sys, os
    import math
    from functools import reduce
    import operator
     
     
     
     
    def Ouvrir():
        global fichier
        filename = tkinter.filedialog.askopenfilename(title="Ouvrir une image",filetypes=[('all files','.*')])
        print(filename)
     
        photo = PhotoImage(file=filename)
        gifdict[filename] = photo
        print(gifdict)
     
        Canevas.create_image(0,0,anchor=NW,image=photo)
        Canevas.config(height=photo.height(),width=photo.width())
     
        fenetre.title("Image "+str(photo.width())+" x "+str(photo.height()))
     
        fichier = filename
     
    def Fermer():
        Canevas.delete(ALL)
        fenetre.title("Comparate PlateNumber")
     
     
    def compare(file1, file2):
     
        image1 = Image.open(file1)
        image2 = Image.open(file2)
        h1 = image1.histogram()
        h2 = image2.histogram()
        rms = math.sqrt(reduce(operator.add,
                               map(lambda a,b: (a-b)**2, h1, h2))/len(h1))
     
        return rms
     
     
     
    fenetre = Tk()
    fenetre.title("Image")
     
    menubar = Menu(fenetre)
     
     
    menufichier = Menu(menubar,tearoff=0)
    menufichier.add_command(label="Ouvrir une image",command=Ouvrir)
    menufichier.add_command(label="Fermer l'image",command=Fermer)
    menufichier.add_command(label="Quitter",command=fenetre.destroy)
    menubar.add_cascade(label="Fichier", menu=menufichier)
    fenetre.config(menu=menubar)
     
    label = Label(fenetre, text="Plaque Auto")
    label.pack()
    bouton = Checkbutton(fenetre, text="Luigi")
    bouton.pack()
    bouton = Checkbutton(fenetre, text="Corentin")
    Button(fenetre, text = 'Comparer', command=compare("img1.png",filename)).pack(side=LEFT, padx=5, pady=5)
    bouton.pack()
     
    photo = PhotoImage(file="img1.png")
    zone_dessin = canvas = Canvas(fenetre,width=600, height=150, borderwidth=8)
    zone_dessin.create_image(300,65,image=photo)
    canvas.pack()
     
    Canevas = Canvas(fenetre)
    Canevas.pack(padx=5,pady=5)
     
    gifdict={}
    fenetre.mainloop()
    J'ai donc mis la variables filename dans une variable globale qui s'appelle fichier, mais quand je lance le programme j'obtiens une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Traceback (most recent call last):
      File "G:\Ecole\Terminale\ISN\Projet\Projetisn\luigi\Comparate Model.py", line 65, in <module>
        Button(fenetre, text = 'Comparer', command=compare("img1.png",filename)).pack(side=LEFT, padx=5, pady=5)
    NameError: name 'filename' is not defined
    Merci de votre rapidité de réponse en tout cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/04/2015, 19h22
  2. Comparaison images
    Par momedalhouma dans le forum Android
    Réponses: 1
    Dernier message: 20/02/2013, 14h25
  3. Tri avec fonction de comparaison personnalisée (Python 3)
    Par MorganStern dans le forum Général Python
    Réponses: 4
    Dernier message: 28/01/2010, 12h22
  4. Comparaison image (débutant)
    Par Hurin dans le forum C#
    Réponses: 4
    Dernier message: 17/08/2007, 14h22
  5. comparaison images bmp
    Par nicolovitch dans le forum Windows
    Réponses: 6
    Dernier message: 02/05/2007, 11h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo