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

Python Discussion :

Générer plusieurs histogrammes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2015
    Messages : 79
    Par défaut Générer plusieurs histogrammes
    Bonjour,
    Suite à un autre topic sur ce forum, j'ai réussi à développer le code suivant :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    from PIL import Image
    import numpy as np
    import matplotlib.pyplot as plt
    import os
     
    directory = "/home/admin01/Images/test/"
     
    for root, dirs, files in os.walk(directory):
    	for file in files:
    		mon_image = Image.open(directory + file) 
    		hist = [] # ou hist = list()
     
    		largeur,hauteur = mon_image.size
     
    		for i in range(256):
    			hist.append(0)
    		for ligne in range(hauteur):
    			for colonne in range(largeur):
    				p = mon_image.getpixel((colonne,ligne))
    				n_gris = int((p[0]+p[1]+p[2])/3)
    				hist[n_gris] = hist[n_gris]+1
     
    	n_abscisses = np.linspace(0,255,256)
    	n_ordonnees = np.array(hist)
    	plt.xlim(0,255)
    	plt.plot(n_abscisses,n_ordonnees)
    	plt.grid(True)
    	plt.title('Densité de couleur de %s' %file)
    	plt.savefig('/home/admin01/Images/histo/%s' %file)
    	#plt.show()
    	hist = []
    Mon code génère bien les histogramme. Pour le premier de la liste de mon directory tout est bon mais pour le deuxième mon programme superpose les deux histogrammes, ce qui rend vite illisible l'histogramme de base. Par exemple ci dessous je vous affiche l'histogramme retourné pour la 4eme photo ( ou il y a 4 courbes) :

    Nom : histo.PNG
Affichages : 970
Taille : 209,8 Ko

    Au début je pensais que c'était une erreur d'indentation mais je n'ai pas trouvé :/

    Merci par avance de votre aide
    Florian

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    plt.figure() avant chaque graphe ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2015
    Messages : 79
    Par défaut
    Citation Envoyé par marco056 Voir le message
    plt.figure() avant chaque graphe ?
    Effectivement ça marche =)
    Merci bien

    Je met donc mon code fonctionnel :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    from PIL import Image
    import numpy as np
    import matplotlib.pyplot as plt
    import os
     
    directory = "/home/admin01/Images/test/"
     
    for root, dirs, files in os.walk(directory):
    	for file in files:
    		mon_image = Image.open(directory + file) 
    		hist = [] # ou hist = list()
     
    		largeur,hauteur = mon_image.size
     
    		for i in range(256):
    			hist.append(0)
    		for ligne in range(hauteur):
    			for colonne in range(largeur):
    				p = mon_image.getpixel((colonne,ligne))
    				n_gris = int((p[0]+p[1]+p[2])/3)
    				hist[n_gris] = hist[n_gris]+1
     
    		n_abscisses = np.linspace(0,255,256)
    		n_ordonnees = np.array(hist)
    		plt.figure()
    		plt.xlim(0,255)
    		plt.plot(n_abscisses,n_ordonnees)
    		plt.grid(True)
    		plt.title('Densité de couleur de %s' %file)
    		plt.savefig('/home/admin01/Images/histo/%s' %file)
    		#plt.show()
    		hist = []

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

Discussions similaires

  1. [GD] Générer plusieurs images en PHP sur une seul page
    Par arnaudperfect dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 06/04/2012, 11h26
  2. [FPDF] Générer plusieurs PDF en une fois
    Par mdr_cedrick dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 02/04/2009, 16h22
  3. générer plusieurs JPanel automatiquement
    Par Dirty Harry dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 21/03/2008, 14h46
  4. Générer plusieurs jar
    Par xilay dans le forum Maven
    Réponses: 5
    Dernier message: 08/11/2007, 17h08
  5. Générer plusieurs fichiers à partir d'un fichier excel
    Par yas2006 dans le forum Documents
    Réponses: 3
    Dernier message: 02/06/2006, 17h54

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