Bonjour !
Pour un projet en cours d'ISN, j'ai essayé de faire un programme afin de rendre une image floue à l'aide de PIL.
Si j'ai bien compris, il faut moyenner la valeur de chaque pixel avec celle des pixels voisins. J'ai choisi de le faire dans une matrice de 5x5.
Evidemment, j'obtiens des bandes noires sur le côté de la nouvelle image, sinon les boucles for sortiraient de la range de l'image.
Ca à l'air de fonctionner avec ce programme :
Le problème, c'est que le résultat affiche une ligne de pixels noir en trop en haut et à gauche, mais je n'arrive vraiment pas à savoir d'où cela provient.
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 im=Image.open('chat.ppm') imflou=Image.new("RGB",(im.size[0],im.size[1])) rouge=int(0) vert=int(0) bleu=int(0) for x in range(im.size[0]): for y in range(im.size[1]): if x-2>=0 and y-2>=0 and x+2<=im.size[0] and y+2<=im.size[1]: for x2 in range(x-2,x+2): for y2 in range(y-2,y+2): pix=im.getpixel((x2,y2)) rouge=rouge+pix[0] vert=vert+pix[1] bleu=bleu+pix[2] rouge=rouge//25 vert=vert//25 bleu=bleu//25 imflou.putpixel((x,y),(rouge,vert,bleu)) rouge=0 vert=0 bleu=0 imflou.show()
Est-ce que quelqu'un aurait une idée ?
Merci
Partager