Bonjour à tous,
Je suis débutant en python et j'ai un ptit problème :
je viens de créer une classe Image et de lui ajouter une méthode qui devrait lisser l'image courante (à l'aide d'une bête moyenne).
Le problème vient du fait que les modifications faites au sein de la classe ne semble pas être répercutés sur l'instance de celle ci ...
Voici le code de la méthode :
et son utilisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 def lissage(self): res = copy.deepcopy(self) for j in range(1, self.height-2): for i in range(1, self.width-2): val = self.getPixel(i,j) + self.getPixel(i+1,j) + self.getPixel(i-1,j) +\ self.getPixel(i,j+1) + self.getPixel(i,j-1) + self.getPixel(i+1,j+1) +\ self.getPixel(i+1,j-1) + self.getPixel(i-1,j+1) + self.getPixel(i-1,j-1) res.setPixel(i,j,val/9) print "Self : ", self.getPixel(109,100), ", Res : ", res.getPixel(109,100) self = copy.deepcopy(res) print "Self : ", self.getPixel(109,100), ", Res2 : ", res.getPixel(109,100) self.writeToPGM("moyenne1.pgm")
Le problème est donc que le programme me produit la sortie suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 img = Image("test.pgm") img.lissage() print "Img : " , img.getPixel(109,100) img.writeToPGM("moyenne2.pgm")
on voit donc que les modifications faites au sein de la méthode ne sont pas effectives (ceci est confirmé par le fait que l'image moyenne1.pgm est bien lissée alors que moyenne2.pgm ne l'est pas ...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Self : 108 , Res : 109 Self : 109 , Res2 : 109 Img : 108
Voilà d'où pensez vous que le problème peut venir ?
Sans doute des copies ?
Merci d'avance
Partager