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

目标

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

理论

什么是直方图?你可以将直方图看作是一个图形或绘图,它可以让你对图像的强度分布有一个整体的了解。它是一个以像素值(范围从 0 到 255,但并不总是这样)为 X 轴,图像中相应像素数为 Y 轴的图。

这只是另一种理解图像的方式。通过查看图像的直方图,你可以直观地了解图像的对比度、亮度、强度分布等。几乎所有的图像处理工具都提供了直方图的功能。下面是 Cambridge in Color 网站上的一张图片,我建议你去访问该网站了解更多详情。

image

你可以看到图像及其直方图。(记住,这个直方图是为灰度图像绘制的,而不是彩色图像)。直方图的左侧区域显示图像中较暗像素的数量,右侧区域显示较亮像素的数量。从直方图中可以看出,暗区域比亮区域多,并且中间色调(中间范围内的像素值,例如 127 左右)的数量非常少。

查找直方图

我们使用函数:cv.calcHist (image, channels, mask, hist, histSize, ranges, accumulate = false)

参数
image源数组。它们都应该具有相同的深度,cv.CV_8U、cv.CV_16U 或 cv.CV_32F,以及相同的大小。它们中的每一个都可以有任意数量的通道。
channels用于计算直方图的尺寸通道列表。
mask可选掩码。如果矩阵不为空,则它必须是与 images[i] 大小相同的 8 位数组。非零掩码元素标记直方图中计数的数组元素。
hist输出直方图(cv.CV_32F 类型),这是一个密集或稀疏的 dims 维数组。
histSize每个维度中直方图大小的数组。
ranges每个维度中直方图 bin 边界的 dims 数组的数组。
accumulate累积标志。如果设置了该标志,则直方图在分配时不会在开始时被清除。此功能使您可以从几组数组计算单个直方图,或者及时更新直方图。

试试看