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