IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

TP Image Niveau de gris


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Analyse système
    Inscrit en
    Mars 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2014
    Messages : 1
    Par défaut TP Image Niveau de gris
    Bonjour a tous,



    Le but du TP est de transformer une image couleur en niveaux de gris, mais j'obtient plutôt un niveau de rouge :-P Pouvez-vous me corriger svp ?

    Nom : tp.png
Affichages : 6404
Taille : 38,1 Ko

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 43
    Par défaut
    Bonjour,

    C'est normal que tu obtienne une image rouge. Tu crée une image 'imagenew' et 'imagefinal' en 'RGB' et non en niveau de gris ('L'). Du coup lorsque tu fais 'im.pupixel((x,y),50)', 50 est associé au R de ce pixel.

    Tu devrais simplement créer une image en niveau de gris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new=Image.new('L',(Thori,Tvert))
    Il existe déjà une méthode pour convertir une image 'RGB' en niveau de gris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from PIL import Image
    im=Image.open('tonImage.jpg')
    im.convert('L')
    im.show()
    Sinon tu t’embête pas mal dans ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for x in range(0,Tvert):
        for y in range(0,Thori):
            r1,g1,v1 = image.getpixel((x,y))
            r.append(r1)
            g.append(g1)
            v.append(v1)
    peut être remplacé par:

    Enfin j'aurai tendance à plutôt utiliser les listes que les coordonnées matriciels des pixels:

    te renvoi la liste des pixels. Tu perd les coordonnées mais tu peux les retrouver facilement, le pixel de coordonnée (x,y) se trouve alors dans data[x+y*im.size[0]].

    Ça te permet de raccourcir un peu cette partie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for x in range(0,Tvert):
        for y in range(0,Thori):
            l1=int((r[y*Thori+x]+g[y*Thori+x]+v[y*Thori+x])/3)
            imageNew.putpixel((x,y),l1)
    en:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    data = image.getdata()
    data = [int((r[x]+g[x]+v[x])/3) for x in range(len(data))]
    image.putdata(data)
    ou simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    data = image.getdata()
    data = [int(sum(data[x])/3) for x in range(len(data))]
    image.putdata(data)
    Sinon je ne comprend pas trop à quoi sert ta dernière boucle =)

Discussions similaires

  1. [Débutant] Méthode pour transformer une image numérique en image niveau de gris
    Par king_soft dans le forum Images
    Réponses: 4
    Dernier message: 21/03/2011, 13h33
  2. Mode d'une image niveau de gris
    Par jassem dans le forum Signal
    Réponses: 1
    Dernier message: 09/03/2011, 12h49
  3. Colorer des pixels sur une image niveau de gris
    Par info_plus dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/09/2010, 16h57
  4. binarisation image niveau de gris
    Par dhekrasousou dans le forum Débuter
    Réponses: 4
    Dernier message: 02/03/2009, 15h34
  5. Réponses: 2
    Dernier message: 23/01/2009, 15h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo