使用以下几行代码,我希望打印给定图像的rgb直方图。总体结果是好的,但将三个直方图与gimp获得的直方图进行比较,我注意到直方图中的一些柱状图丢失了,我的意思是有一个白色的值,其中应该有一个与该色调相关的像素数不同于0的数值。
下面是我的代码:
im = np.array(Image.open('myimage.jpg'))
plt.figure()
plt.hist(im[:,:,0].flatten(), 256, color='red', label='Histogram Red')
plt.figure()
plt.hist(im[:,:,1].flatten(), 256, color='green', label='Histogram Green')
plt.figure()
plt.hist(im[:,:,2].flatten(), 256, color='blue', label='Histogram Blue')
plt.show()发布于 2013-01-18 23:47:21
你还没有给出足够的信息来回答你的问题,但我猜你的bin edges有问题。像你这样给出一系列的柱子会将你的数据范围划分为256个柱子,但是你的数据在12,230的范围内,那么你的柱子的宽度将小于1,你可能会得到奇怪的混叠。我会改用
plot.hist(...,bins=arange(0,257) - .5,...)它显式地传递给要使用的bin边(我推断你的数据是8位整数)。这将为您提供256个条形,以整数为中心。
出于美观的原因,我还会添加lw=0来去掉每个栏周围的黑色轮廓。
https://stackoverflow.com/questions/14397777
复制相似问题