Besoin d'aide pour petit programme
Utilisateur anonyme
-
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 :)
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 :)
A voir également:
- Jlbicquelet pil
- Programme demarrage windows - Guide
- Trier du plus petit au plus grand excel - Guide
- Programme bonjour - Forum Windows
- Petit 3 ✓ - Forum Word
- Petit 2 ✓ - Forum Windows
5 réponses
Imaginons une liste de pixels
à l'interpréteur vite fait
à 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
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...
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...
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 ^^)
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 ^^)
"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.
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.
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ###)
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 ###)
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 :)