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

EDI/RAD Python Discussion :

cmap de imshow [Python 3.X]


Sujet :

EDI/RAD Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Points : 22
    Points
    22
    Par défaut cmap de imshow
    Bonjour à tous


    une question concernant le cmap de matplotlib ; je ne trouve pas d'indication claire sur le net ni sur le forum.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plt.imshow(Gris(IM),cmap=cm.gray) #permet de visualiser l'image en niveaux de gris sur une seule valeur donnée par l'équation IMG[i,j] ; si cm.hot : couleur chaude
    j'ai écrit cela pour expliquer ma ligne ; est ce correct ?
    d'autre part, quelle autre valeur (que gray et hot) puis je donner ?

    Merci pour vos réponses.

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 817
    Points : 7 110
    Points
    7 110
    Par défaut
    cmap, c'est l'échelle de couleur.

    Le problème est que si tu mets gray tout seul, tu auras soit blanc soit noir, mais pas les vrais niveaux de gris.

    Pour cela tu devras spécifier les paramètres vmin et vmax.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plt.imshow(Gris(IM),cmap=cm.gray, vmin=0, vmax=255)
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Merci de ta réponse mais ...
    j'aurais dû mettre mon code complet où je calcule un niveau de gris avant d'appliquer cmap.
    Ceci étant, je souhaite une image en gris et si je ne mets pas le code gray, j'obtiens une image plutot verte.
    D'où ma question précédente...

    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
    def Gris(image):
        print(image.shape) #393, 700, 4 (composants de l'image : lignes, colonne, plans 4 pour rouge, vert, bleu, transparence)
        n=image.shape[0]       #accés au premier composant : n est le nb de lignes (393)
        m=image.shape[1]       #accés au second composant : m est le nb de colonnes (700)
        IMG=np.zeros((n,m)) #création d'une matrice IMG de n lignes et de m colonnes de valeurs 0
        for i in range(n):
            for j in range(m):  #pour chaque pixel de chaque ligne de chaque colonne
                pix=image[i,j]     #on retrouve 4 composants rangés dans une liste avec pix[0]=valeur rouge ...
                                # In [44]: IM[200,100]
                                # Out[44]: Image([126, 139, 117, 255], dtype=uint8)            
                IMG[i,j]=0.299*pix[0]+0.587*pix[1]+0.114*pix[2]#on reconstruit IMG avec les valeurs de pix et
        return IMG              # la formule donnée dans l'énoncé pour retrouver la valeur de gris
     
    # L'argument cmap='gray' permet de représenter les valeurs en niveaux de gris. La fonction matplotlib.pyplot.imshow ainsi utilisée convertit la plage de valeurs [min,max] du tableau en valeurs dans l'intervalle [0,255] pour l'affichage en image.
     
    plt.imshow(Gris(IM),cmap=cm.gray) #permet de visualiser l'image en niveaux de gris sur une seule valeur donnée par l'équation IMG[i,j] ; si cmap.hot : couleur chaude

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur d'Études et de Recherche
    Inscrit en
    Octobre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'Études et de Recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 18
    Points : 21
    Points
    21
    Par défaut
    Je pense que ce que tu as écrit est correct.
    Maintenant, tu peux faire beaucoup plus simple.
    Tu n'as pas besoin de faire de double boucle, c'est là la force de Numpy :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gris = 0.299*IM[:, :, 0] + 0.587*IM[:, :, 1] + 0.114*IM[:, :, 2]
    Ensuite, pour imshow, il est vrai que si tu ne spécifie pas cmap, tu auras par défaut "viridis".
    En spécifiant cm.gray tu choisis une colormap en niveaux de gris.
    Et il y en beaucoup : https://matplotlib.org/users/colormaps.html

    Tu peux donc imaginer cmap=cm.bone, cmap=cm.PuBu, etc. à toi de voir ce que tu souhaites.
    En espérant t'avoir répondu !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    merci à tous, je passe en résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/10/2007, 17h31
  2. CMap et serialisation
    Par MarieMtl dans le forum MFC
    Réponses: 13
    Dernier message: 31/01/2006, 18h01
  3. [MFC][CMap] Problème avec Lookup
    Par MystEre dans le forum MFC
    Réponses: 6
    Dernier message: 27/12/2005, 11h00
  4. Initialisation d'un menbre static de type CMap
    Par vanitom dans le forum MFC
    Réponses: 3
    Dernier message: 11/10/2005, 13h53
  5. [MFC] CMAP non thread safe ?
    Par fmarot dans le forum MFC
    Réponses: 5
    Dernier message: 04/10/2005, 13h21

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