OpenCV 4.11.0
开源计算机视觉
加载中...
搜索中...
未找到匹配项
直方图 - 1:查找、绘制、分析!!!

目标

  • 查找直方图
  • 绘制直方图
  • 您将学习以下函数:cv.calcHist()

理论

什么是直方图?您可以将直方图视为图表或曲线图,它可以为您提供图像强度分布的整体概念。它是一个图表,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累加标志。如果设置了此标志,则在分配直方图时不会在开头将其清除。此功能使您可以从几组数组计算单个直方图,或及时更新直方图。

尝试一下