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 :
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")
et son utilisation :
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")
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
 
Self :  108 , Res  :  109
Self :  109 , Res2 :  109
Img  :  108
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 ...).

Voilà d'où pensez vous que le problème peut venir ?
Sans doute des copies ?

Merci d'avance