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 :)



--
Exactement ce dont a quoi je n'aurai jamais pensé.

5 réponses

  1. 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
    2
    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
  2. 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
  3. 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
    1. 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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. 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