Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2821 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Projet traitement image PGM et Scale Tkinter

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Projet traitement image PGM et Scale Tkinter

n°2229258
Pierrinato​r
Posté le 27-05-2014 à 15:42:54  profilanswer
 

Hello,
 
tudiant débutant en python (j'ai jamais dev sur autre chose) j'ai un petit soucis (parmi tant d'autres) sur un projet à rendre pour bientot.
Le projet consiste en un programme simple de traitement d'image PGM, sous Python 3, donc.
 
J'essaie de faire marcher un "Scale" pour augmenter la luminosité d'une image (se trouvant dans un fichier interface.py)  et de passer la valeur à une autre fonction en paramètre, qui se trouve dans un autre fichier (les fonctions de calcul). Le problème étant que mon scale ne change rien. Si j'injecte une valeur en chiffres directement, là, ça fonctionne.
 
Du coté de mon fichier interface.py, mon code ressemble à ça :
 

Code :
  1. def augmenter_luminosite(cadre):
  2.     fen2=Tk()
  3.     w1 = Scale(fen2, from_=-100, to=100, orient=HORIZONTAL)
  4.     w1.pack()
  5.     z = w1.get()
  6.     luminosite(t_image, hauteur, largeur, z)
  7.     rafraichir(cadre)


 
Du coté de la fonction dans mon fichier fonctions.py, j'ai :
 

Code :
  1. def luminosite(t_image,hauteur,largeur,z):
  2.     for i in range(hauteur):
  3.         for j in range(largeur):
  4.             t_image[i][j] = t_image[i][j] + z
  5.             if t_image[i][j]<0:
  6.                 t_image[i][j]=0
  7.             if t_image[i][j]>255:
  8.                 t_image[i][j]=255


 
Quelqu'un a t-il une idée siouplait ? Je désespère...
 
PS : Mes fichiers sont dispos ici : http://dl.free.fr/dq51JwLUs


Message édité par Pierrinator le 27-05-2014 à 15:44:12
mood
Publicité
Posté le 27-05-2014 à 15:42:54  profilanswer
 

n°2229302
honrisse
Posté le 27-05-2014 à 22:17:34  profilanswer
 

Salut,
Je n'ai plus touché à Python depuis longtemps.

Code :
  1. def augmenter_luminosite(cadre):
  2.             fen2=Tk()
  3.             w1 = Scale(fen2, from_=-100, to=100, orient=HORIZONTAL)
  4.             w1.pack()
  5.             z = w1.get()
  6.             print(z)
  7.             luminosite(t_image, hauteur, largeur, z)
  8.             rafraichir(cadre)


 
Si l'on affiche la valeur de z, elle est égale à 0 car il faut attendre que l'on ait fini de bouger le curseur avant de modifier la luminosité.
Ici, on affiche la fenêtre slider et tout de suite après on récupère la valeur du slider alors qu'il faudrait attendre la fin de la modification du slider (avec une callback fonction par exemple).
Je ne sais pas si je me suis bien fait comprendre.  
 
Par exemple quelque chose comme ça :

Code :
  1. #!/usr/bin/python3
  2. from tkinter import *
  3. from tkinter.filedialog import *
  4. from tableaux import *
  5. from pgm_raw import *
  6. from fonctions import *
  7. t_image=None
  8. largeur=-1
  9. hauteur=-1
  10. cadre=None
  11. slider=None
  12. # Nos fonctions ---------------------------------------------
  13. # Ouvrir_fichier  --------------------
  14. def ouvrir_fichier(cadre, info):
  15.     global image, t_image, hauteur, largeur
  16.     nom_fichier = askopenfilename()
  17.     image = PhotoImage(file = nom_fichier)
  18.     cadre.configure(height=image.height(), width=image.width())
  19.     cadre.create_image(0,0, anchor = NW, image = image)
  20.     t_image,hauteur,largeur=lire_fichier_pgm_binaire(nom_fichier)
  21.     cadre.bind("<Motion>", lambda event : mouse (event, info))
  22. # file_save  ------------------------
  23. def file_save():
  24.     file_name=asksaveasfilename()
  25.     if file_name==' ':
  26.         return
  27.     ecrire_fichier_pgm_binaire(t_image ,image.width() ,image.height() ,file_name)
  28. def rafraichir(cadre):
  29.     global image
  30.     global t_image
  31.     file=mkstemp()
  32.     ecrire_fichier_pgm_binaire(t_image, hauteur, largeur, "toto.pgm" )
  33.     image=PhotoImage(file="toto.pgm" )
  34.     cadre.create_image(0,0,anchor='nw',image=image)
  35. #    remove(file[1])
  36. # La fonction Mouse
  37. def mouse(event, info):
  38.     x = event.x
  39.     y = event.y
  40.     info.configure(text= "x: " + str(x) + " y: " + str(y) + " val: " + image.get(x, y))
  41. def sel(cadre):
  42.    z = slider.get()
  43.    print(z)
  44.    luminosite(t_image, hauteur, largeur, z)
  45.    rafraichir(cadre)
  46. def augmenter_luminosite(cadre):
  47.     global slider
  48.     fen2=Tk()
  49.     slider = Scale(fen2, from_=-100, to=100, orient=HORIZONTAL)
  50.     slider.pack()
  51.     button = Button(fen2, text="Apply Scale Value", command=lambda:sel(cadre))
  52.     button.pack(anchor=CENTER)
  53. def rotation():
  54.     fen1=Tk()
  55.     Bouton90d=Button(fen1, text="Rotation à  90° à  droite", command=lambda:rotationA90Droite(t_image,hauteur,largeur))
  56.     Bouton90g=Button(fen1, text="Rotation à  90° à  gauche", command=lambda:rotationA90Gauche(t_image,hauteur,largeur))
  57.     Bouton180=Button(fen1, text="Rotation à  180°", command=lambda:rotation180(t_image,hauteur,largeur))
  58.     Bouton90d.pack()
  59.     Bouton90g.pack()
  60.     Bouton180.pack()
  61. def inversionInit():
  62.     inversion(t_image, hauteur, largeur)
  63. def rafraichirInit():
  64.     rafraichir(t_image, hauteur, largeur)


Message édité par honrisse le 27-05-2014 à 22:30:50

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Projet traitement image PGM et Scale Tkinter

 

Sujets relatifs
Enregistrement du choix d'image de fondFormulaire de contact + traitement
aide pour un projet en programmation c++[arduino] Projet de terminale
bordure image Html / CSS[PHP] probleme #Ressource #Fichier sur manip image
Projet en Java's cool, effet sur imageQue pensez vous de mon projet de Web APP
Compteur d'heures de travail par projet VBA EXCEL 
Plus de sujets relatifs à : Projet traitement image PGM et Scale Tkinter


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR