Besoin d'aide pour petit programme

Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,

Tout d'abord, je débute a python donc je ne cherche pas a coder un truc compliqué :)

J'aimerai comprendre comment coder un programme permettant de flouter une image, par exemple assembler un carré de 10x10 pixels, faire la moyenne des couleurs avec les code RVB pour qu'au final un carré ressorte avec la nouvelle couleur

Merci d'avance :)


5 réponses

Utilisateur anonyme
 
Imaginons une liste de pixels

à l'interpréteur vite fait

>>> liste = [[167, 133, 44], [180, 146, 72], [180, 145, 91], [201, 166, 102]]
>>> Rmoy = Gmoy = Bmoy = 0
>>> for pixel in liste:
... R, G, B = pixel
... Rmoy += R
... Gmoy += G
... Bmoy += B
...
>>> print(Rmoy, Gmoy, Bmoy)
728 590 309
>>> Rmoy /= len(liste)
>>> Rmoy
182.0
>>> Gmoy /= len(liste)
>>> Gmoy
147.5
1
Utilisateur anonyme
 
Je comprend pas comment ca marche, je vais faire une autre methode au final...

Je vais juste prendre le pixel central d'une zone et le faire remplacer tout ceux autour, ce sera plus simple

merci quand mee de l'aide :)
0
Utilisateur anonyme
 
Bonjour,

Tu peux regarder du côté du module PIL ( http://effbot.org/imagingbook/ ), qui permet de gérer tout ce qui est en rapport avec les images en général.

Voir du côté de ImageFilter et la constante BLUR -> http://jlbicquelet.free.fr/scripts/python/pil/pil.php#transformation7

Bonne continuation...
0
Utilisateur anonyme
 
Bon je reviens, j'ai pas le droit d'utiliser PIL

J'ai le debut mais apres je ne sais pas comment selectionner x et y dans la matrice, pour pouvoir modifier la lsite avec a[:10] si je veux un carré de 10×10 pixels

J'ai ca pour le debut seulement

from netpbm import *
nomFichier = "joconde_P3.ppm"
tab, entete =lect_image(nomFichier)
print(entete)
afficher_tableau(tab)

(oui j'essaie sur une image de la joconde ^^)
0
Utilisateur anonyme
 
"J'ai le debut mais apres je ne sais pas comment selectionner x et y dans la matrice, pour pouvoir modifier la lsite avec a[:10] si je veux un carré de 10×10 pixels"

On peut avoir un exemple, c'est pas très clair...

Si vous donnez un exemple de matrice, et la sortie attendue, je pense qu'on y arrivera.
0
Utilisateur anonyme
 
La j'ai une liste des pixels de couleur -- > [167, 133, 44], [180, 146, 72], [180, 145, 91], [201, 166, 102]etc etc

c'est une liste, donc deja comment je fais pour que ce soir comme un "tableau" ?

Et je voudrais pouvoir demander a l'utilisateur de choisir un valeur qui determinera la taille du cote des pixels a flouter

par exemple pour 10 le programme prendra un carré (en partant de en haut a gauche) de 10 pixels par 10 pixels, en ensuite il devra faire la moyenne de tous les R, de tous les G et de tous les B pour remplir ces 100pixels par une seule et meme couleur, celle de la moyenne qu'on vient de faire
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
Nouveau programme, meme objectif



from netpbm import *
nom= "joconde_P3.ppm"
tab, entete =lect_image(nom)
Pix=int(input("entrez le nombre pour la pixelisation : "))
NbsX=entete[1]
NbsY=entete[2]
tab_final=creer_matrice(NbsY,NbsX,[255, 255, 255])
NbX=int(entete[1])
NbY=int(entete[2])
RepY= NbY // Pix
RepX= NbX // Pix
#le but est de savoir combien de carreau peut rentrer dans l'image
d=Pix
i=Pix

VarY=0
a=0

g=1
c=1

PfX=Pix
PiX=0

PfY=Pix
PiY=0

VarY2=VarY
aa=a
while(g<=RepX):
while(c<=RepY):
#la boucle est la pour repeter l'action jusqu'au nombre de fois que l'on peut
#mettre des carreaux, d'une part dans la hauteur, de l'autre dans la largeur.
for NbsY in range(VarY,i) :
for NbsX in range(a,d):
# Si n est impair
if (((Pix+1) % 2) == 0) :
t=int(i-(Pix/2))
k=int(d-(Pix/2))
f=tab[t][k]
# Si n est pair
elif (Pix % 2 ) == 0 :
t=int(i-(Pix/2)+1)
k=int(d-(Pix/2)+1)
f=tab[k][t]
#f représente le pixel qui est au mileu du carreau, il varie celon et t et k qui
#########eux memes varient celon l'axe X et Y
while PiX <= PfX:
while PiY <=PfY:
#ces boucles sont la pour faire en sorte que les carreaux changes un a un
#afin quelle soit remplacer par la case f
tab_final[VarY2][aa]=f
PiY=PiY+1
VarY2=VarY2+1
PiX=PiX+1
aa=aa+1
#ici on cherche a remplacer tout les pixel du carreau par le pixel f c'est a dire
#celui du mileu
a=a+Pix
d=Pix+Pix
c=c+1
w=range(a,d)
#on ajuste les variables pour que celles ci ce situe maintenant un carreau plus loin
#et que l'operation se repete
g=g+1
VarY=VarY+Pix
i=i+Pix
a=1
d=Pix
c=1
y=range(VarY,i)
#de meme on descend d'un carreau et on repete l'opération qui constiste et modifier
#toute la ligne
fic=nom+"_mosaique"
fichier_image_P3(tab_final,fic,255)

Il*y a un probleme pour remplacer les pixels, ca fait que la premiere colonne, je ne sais pas commetn faire pour que ca passe sur la deuxieme colonne

Des astuces svp ? (ca commence la ou il y a plein de ###)
0