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 :

Trier un 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 Trier un histogrammes
    Bonjour,
    suite à un ancien topic, j'ai réussi à générer des histogrammes grâce au 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
    32
    33
    34
    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
    				print(hist[n_gris])
     
     
    		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 = []
    Cela me génère les histogrammes suivant :

    Nom : histog.PNG
Affichages : 789
Taille : 102,5 Ko


    J'aimerai maintenant les trier ( enlever les pictogrammes qui ont des histogrammes plats avec un seul pics) mais je ne sais absolument pas comment faire :/
    J'avais d'abord pensé à calculer le nombre de point qui ont pour ordonnée 0 ou <= 100 pour les supprimer mais ils ne sont pas comptés.
    Bref, si vous avez une idée pour m'aider je vous écouterai avec plaisir.
    Merci par avance pour vos réponse et votre refléxion,
    Florian

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Pourquoi diable crées-tu toi-même l'histogramme ? C'est le travail de PIL ça.

    En plus la simple moyenne comme tu le fais ne donne pas la luminosité exacte, c'est un rien plus compliqué.

    Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
            image = Image.open(directory + file)
            greymap = image.convert("L")
            values = greymap.histogram()[:256]
            n_abscisses = np.linspace(0,255,256)
    	n_ordonnees = np.array(values)
            ... etc
    et pour savoir combien de valeurs sont inférieures à x tu peux en dresser la liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    lowers = [v for v in values if v <= 100]
    len(lowers) t'en donnera le nombre et ce sera hyper rapide.

  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 VinsS Voir le message
    Salut,

    Pourquoi diable crées-tu toi-même l'histogramme ? C'est le travail de PIL ça.

    En plus la simple moyenne comme tu le fais ne donne pas la luminosité exacte, c'est un rien plus compliqué.

    Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
            image = Image.open(directory + file)
            greymap = image.convert("L")
            values = greymap.histogram()[:256]
            n_abscisses = np.linspace(0,255,256)
    	n_ordonnees = np.array(values)
            ... etc
    et pour savoir combien de valeurs sont inférieures à x tu peux en dresser la liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    lowers = [v for v in values if v <= 100]
    len(lowers) t'en donnera le nombre et ce sera hyper rapide.
    Merci a toi pour toutes tes précisions.
    Il est en effet plus pratique d'utiliser ton code et cela fait gagner de=u temps d’exécution en prime =)
    Pour le tri : SUPER MÉTHODE =) presque trop facile avec un petit if tout est trié !!!

    Merci à toi pour ton aide

Discussions similaires

  1. [VxiR2] Trier un graphe histogramme cumulé
    Par savant54 dans le forum Deski
    Réponses: 2
    Dernier message: 20/09/2012, 12h53
  2. [XL-2010] Trier des données par intervalle et tracer un histogramme
    Par Grichka146 dans le forum Excel
    Réponses: 1
    Dernier message: 05/01/2012, 20h35
  3. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 20h22
  4. [TChart] comment remplir un histogramme avec du rouge strié.
    Par :GREG: dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/08/2002, 09h37
  5. trier un tableau et compter des elements du tableau
    Par remi51 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 17/06/2002, 16h51

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