直方图计算calcHist函数说明

本文详细介绍了OpenCV中calcHist函数的使用方法,包括输入图像数组、通道选择、掩模图像、输出直方图、直方图维数、bin尺寸及范围等关键参数的设置,帮助读者深入理解直方图计算过程。

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

函数原型:void calcHist(const Mat* images, int nimages, const int* channels, InputArray mask, OutputArray hist, int dims, const int* histSize, const float** ranges, bool uniform=true, bool accumulate=false )

images : 输入图像的数组。数组中的每幅图像深度和尺寸务必相同,通道数可以不必相同。

nimages: 输入的图像个数,也即是上面images数组大小。

channels: 用来计算直方图所对应的通道数组。channels数组大小代表计算直方图的维数,如果数组大小N == 1,则表示仅仅使用单通道图像计算一维直方图;如果N >= 2,则表示使用N幅通道图像计算N维直方图。当然这N幅图像怎么选择,就取决channels数组了。图像数组中第一幅图像的通道序号是从0到images[0].channels()-1, 第二幅图像根据自己所含的通道数在前一幅图像的最后序号依次增加,从images[0].channels()到images[0].channels() + images[1].channels() - 1,后面图像依次类推。比如images 数组大小为4, 前3幅图像均为彩色图像且含有BGR三通道,第4幅图像为灰度图像只有一通道。如果想使用第一幅图像G通道,第二幅图像B通道,第三幅图像的R通道以及最后一幅图像来计算四维直方图,那么channels可以这样定义:channels[4] = {1, 3, 8, 9}就可以取到对应通道的图像进行直方图计算。

mask:掩模图像

hist:是一个多维数组的直方图,维数与channels数组大小相同

dims:直方图维数与channels大小相同

histSize:每个维度的直方图尺寸数组 ,数组中每一个元素代表每一维中所含的bin个数

ranges:指出直方图每一维的每个bin的上下界范围数组的数组。如果是均匀分布,那么只要给出上下限即可,那么每个bin的宽度就是就(ranges[i][1] - ranges[i][0]) / histSize[i]; 如果是非均匀分布,那么一维数组ranges[i] 必须包含每个bin的上下限,相邻bin的上下限有重合的,无需重复包含,那么每一维中ranges[i]含有的元素个数为histSize[i]+1个。

其他参数略。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值