直方图计算函数的用法

这篇博客详细介绍了如何使用OpenCV的calcHist函数计算图像直方图,包括参数解释和实例,强调了channels、dims和histSize在确定直方图计算中的作用。直方图是统计图像数据分布的重要工具,对于灰度图像和多通道图像有不同的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、图像直方图

直方图是对数据的集合 统计,并将统计结果分布于一系列预定义的 bins 中。这里的 数据 不仅仅指的是颜色灰度值 , 统计数据可能是任何能有效描述图像的特征(如梯度、方向等)。特别地,当图像直方图描述的是图像的各个灰度级的统计特性时,称之为灰度直方图。

结合灰度直方图了解直方图的一些具体细节(参考自OpenCV官网):
dims: 需要统计的特征的数目,仅统计灰度值(灰度图像)时dims=1,对于三通道图像dims=3。
bins: 每个特征空间 子区段 的数目,如:灰度图中每十六个连续的灰度值作为一个统计区间,则 bins = 16。
range: 每个特征空间的取值范围,灰度图像中, range = [0,255]。
2、颜色分布直方图的计算

OpenCV提供了计算图像直方图的API函数calcHist,其函数原型为:

void calcHist(const Mat* arrays,
int narrays,
const int* channels,
InputArray mask,
OutputArray hist,
int dims,
const int* histSize,
const float** ranges,
bool uniform=true,
bool accumulate=false )
1
2
3
4
5
6
7
8
9
10
parameters:
第一个参数:源输入(图像)数组,必须是深度和大小均相同的CV_8U或者CV_32F(即uchar或者float)图片,每一个可以是任意通道的;
第二个参数:源输入数组中的图片个数;
第三个参数:用来计算直方图的通道维数的数组,第一张图片的通道由0到arrays[0].channels()-1列出,第二张图片的通道从arrays[0].channels()到arrays[0].channels()+arrays[1].channels()-1,以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值