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

Tkinter Python Discussion :

Ne pas modifier la dynamique de couleur dans un canvas de Tkinter


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2015
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Ne pas modifier la dynamique de couleur dans un canvas de Tkinter
    Bonjour,
    Je travail actuellement sur du traitement d'images médicales. Post traitement, j'ai les images en binaire, je les ouvres sous python et souhaites les observer avec mon interface graphique développée. Pour cela j'utilise un canvas de Tkinter.
    Seulement, lorsque j'ouvre l'image, la dynamique de couleur est modifiée.

    Ci-joint, un morceau de code qui illustre mon problème, je souhaiterais que l'affichage soit le même que lorsque je regarde avec pyplot.

    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
     
    from Tkinter import *
    import struct
    import numpy
    import matplotlib.pyplot as plt
    import math
    from PIL import Image,ImageTk
     
     
     
    #Reglages de la fenetre
    fenetreseg=Tk()
    frameImageseg = LabelFrame(fenetreseg, text="")
    frameImageseg.pack(side = LEFT,fill="both", expand="yes")
    frameBoutonseg = LabelFrame(frameImageseg, text="Images segmentée",width=512, height=60)
    frameBoutonseg.pack(side = BOTTOM,fill="both", expand="yes")
    canvasDicomseg = Canvas(frameImageseg, width=100, height=100, bg='ivory')
    canvasDicomseg.pack(side=TOP, padx=5, pady=5)
     
     
     
    #Ouverture et lecture des images en binaire
    pathopen="C:/Users/pc/Documents/Projet2015/lesfichiersok"
    f = open (pathopen+"/slicesseg2.dat", "rb")
    cote1=100
    cote2=100
    coupe=numpy.zeros([cote1,cote2])
    i=0
    j=0
     
    try:
        while i<cote1-1:
            data = f.read(4) # read the next /byte/
            if data == "":
                break;
            string=str(struct.unpack('i', data))
            string=string.replace("(","")
            string=string.replace(",","")
            string=string.replace(")","")
            coupe[i,j]=int(string)
            if j==cote2-1:
                j=0
                i=i+1
            j=j+1
     
     
    except IOError:
        # The error handling here
        # Nothing for this example
        pass
    finally:
        f.close()
     
     
    #Affichage de l'image lue dans le canavas et sous pyplot
    imseg = Image.fromarray(coupe)
    imseg = imseg.resize((500,500), Image.ANTIALIAS)
    photoseg=ImageTk.PhotoImage(imseg)
    canvasDicomseg.config(width=photoseg.width(), height=photoseg.height())
    imageseg = canvasDicomseg.create_image(0, 0, anchor=NW, image=photoseg)
    plt.figure()                                     
    plt.imshow(coupe[:,:],cmap='gray')
    plt.show()
     
    fenetreseg.mainloop()
    Pour l'image en binaire, j'ai changé l'extension en .txt car le .dat passait en fichiers non valide. si vous voulez tester vous pouvez rechanger l'extension en .dat

    Merci d'avance pour votre aide.

    Nicolas.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 311
    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 311
    Points : 36 813
    Points
    36 813
    Par défaut
    Salut,

    Relisez votre code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    imseg = Image.fromarray(coupe)
    imseg = imseg.resize((500,500), Image.ANTIALIAS)
    photoseg=ImageTk.PhotoImage(imseg)
    canvasDicomseg.config(width=photoseg.width(), height=photoseg.height())
    imageseg = canvasDicomseg.create_image(0, 0, anchor=NW, image=photoseg)
    plt.figure()                                     
    plt.imshow(coupe[:,:],cmap='gray')
    plt.show()
    Vous n'afichez pas la même chose dans le canvas et via plt.show.
    Essayez avec plt.imshow(imseg) au lieu de plt.imshow(coupe[:,:],cmap='gray')

    - W

Discussions similaires

  1. modifier txt dynamique qui est dans un clip depuis la scène
    Par italiasky dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 16/05/2008, 08h43
  2. Degrade de couleur dans un canvas
    Par Pendary dans le forum C++Builder
    Réponses: 4
    Dernier message: 10/03/2007, 13h20
  3. Modifier une couleur dans un sprite
    Par matteli dans le forum DirectX
    Réponses: 2
    Dernier message: 30/12/2006, 13h42
  4. Réponses: 14
    Dernier message: 10/01/2006, 19h08
  5. Modifier la taille, la couleur ... dans un label
    Par Guigui_ dans le forum GTK+ avec Python
    Réponses: 3
    Dernier message: 15/07/2004, 17h09

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