OpenCV 4.11.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,以及相同的大小。它们中的每一个都可以具有任意数量的通道。 |
channels | 用于计算直方图的通道维数列表。 |
mask | 可选掩码。如果矩阵非空,则它必须是与 images[i] 大小相同的 8 位数组。非零掩码元素标记在直方图中计数的数组元素。 |
hist | 输出直方图(cv.CV_32F 类型),它是一个密集或稀疏的 dims 维数组。 |
histSize | 每个维度中直方图大小的数组。 |
ranges | 每个维度中直方图 bin 边界的 dims 数组数组。 |
accumulate | 累加标志。如果设置了此标志,则在分配直方图时不会在开头将其清除。此功能使您可以从几组数组计算单个直方图,或及时更新直方图。 |