OpenCV 4.10.0
开源计算机视觉
|
那么,什么是直方图?您可以将直方图视为一个图表或绘图,它可以让您了解图像的强度分布的总体概念。它是一个绘图,X 轴中包含像素值(范围从 0 到 255,并非总是如此),Y 轴中包含图像中相应像素的数量。
这是了解图像的另一种方式。通过观察图像的直方图,您可以直观地了解该图像的对比度、亮度、强度分布等。当今几乎所有图像处理工具都提供有关直方图的功能。以下是 剑桥彩色网站 的一张图片,我建议您访问该网站了解更多详细信息。
您可以看到图像及其直方图。(请记住,此直方图是针对灰度图像而非彩色图像绘制的)。直方图的左半部分显示了图像中的较暗像素量,右半部分显示了较亮像素量。从直方图中,您可以看到较暗区域比较亮区域更大,中等色调(中等范围中的像素值,例如约 127)的数量非常少。
我们使用函数:cv.calcHist (image, channels, mask, hist, histSize, ranges, accumulate = false)
图像 | 源数组。它们都应该具有相同的深度 cv.CV_8U、cv.CV_16U 或 cv.CV_32F 以及相同的大小。它们各自可以具有任意数量的通道。 |
通道 | 用于计算直方图的空间维度通道的列表。 |
掩码 | 可选掩码。如果矩阵不为空,则它必须是与 images[i] 大小相同的 8 位数组。非零掩码元素将直方图中计数的数组元素标记出来。 |
直方图 | 输出直方图(cv.CV_32F 类型),它是一个密集或稀疏的维度数组。 |
直方图大小 | 各维度直方图大小的数组。 |
范围 | 各维度直方图箱边界维度数组的数组。 |
累积 | 累积标志。如果它被设置,则在分配时不会清除直方图。此功能使您能够从多组数组计算单个直方图,或在时间上更新直方图。 |