

直方图的 x 轴是灰度值 0 到 255
y  轴是图片中具有同一个灰度值的 点的数目。
直方图其实就是对图像的另一种 解释 。  直方图我们可以 对图像的对比度 亮度 灰度分布等有一个直观的认识。

直方图是根据灰度图像绘制的 而不是彩色图像

BINS 上 的直方图显示了每个灰度值对应的像素数。如果像素值为 0 到 255 你就   256 个数来显示上 的直方图。

DIMS  示我们收 数据的参数数目。在本例中 我们对收 到的数据 只考 一件事 灰度值。所以  就是 1。
RANGE 就是 统 的灰度值范围 一般来 为 [0 256] 也就是 所 有的灰度值

cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]])
1. images: 原图像 图像格式为 uint8 或 float32 。当传入函数时应
用中括号 [] 括 来 例如 [img]。
2. channels: 同样  用中括号括 来 它会告 函数我们 统  幅图 像的直方图。如果 入图像是灰度图 它的值就是 [0] 如果是彩色图像 的  传入的参数可以是 [0] [1] [2] 它们分别对应着   B G R。
3. mask: 掩模图像。 统 整幅图像的直方图就把它 为 None。但是如 果你想统 图像某一 分的直方图的  你就  制作一个掩模图像 并 使用它。 后 有例子
4. histSize:BIN 的数目。也应 用中括号括 来 例如 [256]。
5. ranges: 像素值范围  常为 [0 256]


使用 Numpy 统 直方图 Numpy 中的函数 np.histogram() 也可以帮 我们统 直方图。你也可以尝 一下下 的代码
hist 与上  算的一样。但是  的 bins 是 257 因为 Numpy  算 bins 的方式为 0-0.99,1-1.99,2-2.99 等。所以最后一个范围是 255-255.99。 为了 示它 所以在 bins 的结尾加上了 256。但是我们不   256 到 255 就够了。
#img.ravel() 将图像 成一维数组   没有中括号。
hist,bins = np.histogram(img.ravel(),256,[0,256])