C'est un mémorandum lors du calcul de l'histogramme de la valeur de luminosité de l'image et de la moyenne / dispersion.
Trouvez l'histogramme, la moyenne et l'écart type de l'image ci-dessous lena.png: Image de test black.png: image uniformément noire
test.py
import numpy as np
import scipy.stats as sstats
import cv2
def print_stat(fname):
img_name = fname
img = cv2.imread(fname,1)
# Grayscale
img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
#Tableau unidimensionnel
img = np.array(img).flatten()
# img = img[img!=255]
mean = img.mean() #Valeur moyenne
std = np.std(img) #écart-type
median = np.median(img) #Médian
mode = sstats.mode(img)[0][0] #Valeur la plus fréquente
print("---", img_name)
print("mean : ", mean)
print("stddev : ", std)
print("median : ", median)
print("mode : ", mode)
print_stat('lena.png')
print_stat('black.png')
résultat
$ python test.py
--- lena.png
mean : 106.4122314453125
stddev : 45.733566693923045
median : 107.0
mode : 44
--- black.png
mean : 0.0
stddev : 0.0
median : 0.0
mode : 0
Si vous souhaitez le rendre un peu plus facile à utiliser depuis la ligne de commande,
test.py
import sys
import numpy as np
import scipy.stats as sstats
import cv2
args = sys.argv
def print_stat(fname):
img_name = fname
img = cv2.imread(fname,1)
# Grayscale
img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
#Tableau unidimensionnel
img = np.array(img).flatten()
# img = img[img!=255]
mean = img.mean()
std = np.std(img)
median = np.median(img)
mode = sstats.mode(img)[0][0]
print("name=" + img_name + ",")
print("mean=" + str(mean) + ",")
print("stddev=" + str(std) + ",")
print("median=" + str(median) + ",")
print("mode=" + str(mode) + ",")
arg1=args[1]
print_stat(arg1)
$ RET=$(python test.py lena.png)
$ echo $RET
name=lena.png , mean=106.4122314453125 , stddev=45.733566693923045 , median=107.0 , mode=44 ,
$ echo $RET | sed -e 's/.*name=//' | cut -d',' -f 1 | awk '{printf "%-20s\n",$1}'
lena.png
$ echo $RET | sed -e 's/.*mean=//' | cut -d',' -f 1 | awk '{printf "%-20s\n",$1}'
106.4122314453125
Recommended Posts