我将图像加载到一个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