我將圖像加載到一個numpy數組中,並且想要在直方圖中繪製其顏色值。numpy圖像中灰度值的直方圖
import numpy as np
from skimage import io
from skimage import color
img = io.imread('img.jpg')
img = color.rgb2gray(img)
unq = np.unique(img)
unq = np.sort(unq)
當我們檢查的unq
的價值,我們會看到類似
array([ 5.65490196e-04, 8.33333333e-04, 1.13098039e-03, ...,
7.07550980e-01, 7.09225490e-01, 7.10073725e-01])
到現在還太值matplotlib
所以我的想法是遍歷unq
和刪除所有這些偏差僅x
值從它的前身。
dels = []
for i in range(1, len(unq)):
if abs(unq[i]-unq[i-1]) < 0.0003:
dels.append(i)
unq = np.delete(unq, dels)
雖然這種方法可行是因爲它確實非常低效不使用numpy的經過優化的實現。
是否有一個numpy功能可以爲我做這個?
只是注意到我的算法丟失了顏色出現頻率的信息。讓我試着修復這個。
爲什麼不使用['np.histogram(img,bins)'](http://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html)(或['plt.hist (img.ravel(),bin)'](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist)如果你只是想繪製它)? –
@ali_m是的,這會回答我的問題。 – bodokaiser