关于calchist()中的channels参数的说明
2016-10-24 22:00
309 查看
OpenCV提供了calcHist函数来计算图像直方图。
其中C++的函数原型如下: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 );
void calcHist(const Mat* arrays, int narrays, const int* channels, InputArray mask, SparseMat&
hist, int dims, const int* histSize, const float** ranges, bool uniform=true, bool accumulate=
false );
参数解释:
arrays。输入的图像的指针,可以是多幅图像,所有的图像必须有同样的深度(CV_8U or CV_32F)。同时一副图像可以有多个channels。
narrays。输入的图像的个数。
channels。用来计算直方图的channes的数组。这里只以输入图像是一张图像的情况说明,做了一个小实验。首先定义int channels[1];当我们给channels[0]赋值为0的时候,输出一个直方图的值,见下图:
给channels[0]=1的时候输出直方图的值见下图:
然后我们把图片分成bgr通道,取第一个通道,即b通道,然后对这个通道进行统计直方图,见下图:
可以观察到,第一张和第三张的直方图数值是一样的,因此得出结论:
当输入图像为多通道图像时,channels[0]={0},表示的是取其第一个通道,channels[0]={1}表示取其第二个通道,以此类推,channels[2]={1,2}表示的是取其第2个和第3个通道的图像进行直方图统计。
mask。掩码。如果mask不为空,那么它必须是一个8位(CV_8U)的数组,并且它的大小的和arrays[i]的大小相同,值为1的点将用来计算
直方图。
hist。计算出来的直方图
dims。计算出来的直方图的维数。
histSize。在每一维上直方图的个数。简单把直方图看作一个一个的竖条的话,就是每一维上竖条的个数。
ranges。用来进行统计的范围。比如
float rang1[] = {0, 20};
float rang2[] = {30, 40};
const float *rangs[] = {rang1, rang2};那么就是对0,20和30,40范围的值进行统计。
uniform。每一个竖条的宽度是否相等。
accumulate。Accumulation flag. If it is set, the histogram is not cleared in the beginning
when it is allocated. This feature enables you to compute a single histogram from several
sets of arrays, or to update the histogram in time. 是否累加。如果为true,在下次计算的时候不会首先清空hist。这个地方我是这样理解的,不知道有没有错,
其中C++的函数原型如下: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 );
void calcHist(const Mat* arrays, int narrays, const int* channels, InputArray mask, SparseMat&
hist, int dims, const int* histSize, const float** ranges, bool uniform=true, bool accumulate=
false );
参数解释:
arrays。输入的图像的指针,可以是多幅图像,所有的图像必须有同样的深度(CV_8U or CV_32F)。同时一副图像可以有多个channels。
narrays。输入的图像的个数。
channels。用来计算直方图的channes的数组。这里只以输入图像是一张图像的情况说明,做了一个小实验。首先定义int channels[1];当我们给channels[0]赋值为0的时候,输出一个直方图的值,见下图:
给channels[0]=1的时候输出直方图的值见下图:
然后我们把图片分成bgr通道,取第一个通道,即b通道,然后对这个通道进行统计直方图,见下图:
可以观察到,第一张和第三张的直方图数值是一样的,因此得出结论:
当输入图像为多通道图像时,channels[0]={0},表示的是取其第一个通道,channels[0]={1}表示取其第二个通道,以此类推,channels[2]={1,2}表示的是取其第2个和第3个通道的图像进行直方图统计。
mask。掩码。如果mask不为空,那么它必须是一个8位(CV_8U)的数组,并且它的大小的和arrays[i]的大小相同,值为1的点将用来计算
直方图。
hist。计算出来的直方图
dims。计算出来的直方图的维数。
histSize。在每一维上直方图的个数。简单把直方图看作一个一个的竖条的话,就是每一维上竖条的个数。
ranges。用来进行统计的范围。比如
float rang1[] = {0, 20};
float rang2[] = {30, 40};
const float *rangs[] = {rang1, rang2};那么就是对0,20和30,40范围的值进行统计。
uniform。每一个竖条的宽度是否相等。
accumulate。Accumulation flag. If it is set, the histogram is not cleared in the beginning
when it is allocated. This feature enables you to compute a single histogram from several
sets of arrays, or to update the histogram in time. 是否累加。如果为true,在下次计算的时候不会首先清空hist。这个地方我是这样理解的,不知道有没有错,
相关文章推荐
- 关于opencv直方图计算函数 calcHist()的channels参数的理解
- 关于CONVERT(varchar(10),date,111)函数最后一个参数说明
- (原创)关于构造函数及参数执行顺序说明(c#)
- 关于session在PHP5的配置文件中的详细设置参数说明
- 关于OpenLayers.ProxyHost参数的使用说明
- 关于ssh 配置文件的参数说明
- Tuxedo 中关于时间的参数的说明
- 关于创建进程函数CreateProcess()字符串参数的说明
- 关于显卡的一些参数说明,告诉你如何分辨哪个好一点,哪个烂一点。
- 转: 关于CONVERT(varchar(10),date,111)函数最后一个参数说明
- 关于main(int argc,char *argv[])里面参数的说明
- 关于C#中的ref和out参数的说明
- 有关于oracle参数文件的说明
- SQL关于output型参数的说明
- 关于session在PHP5的配置文件中的详细设置参数说明
- 关于CONVERT(varchar(10),date,111)函数最后一个参数说明
- 关于csvde的参数说明
- 注册表项关于start参数的说明,一直以来都搞错了,竟然还写了个错误的程序禁用本级的一些自启动项,汗呀
- Linux下关于keepalive的内核参数说明
- 关于main(int argc,char *argv[])里面参数的说明