OpenCV C++直方图

使用与说明

Posted by Raserting_L on April 2, 2019
void cv::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: 输入的图像或数组,它们的深度必须为CV_8U, CV_16U或CV_32F中的一类,尺寸必须相同。

  • nimages: 输入数组个数,也就是第一个参数中存放了几张图像,有几个原数组。

  • channels: 需要统计的通道dim,第一个数组通道从0到image[0].channels()-1,第二个数组从image[0].channels()到images[0].channels()+images[1].channels()-1,以后的数组以此类推

  • mask: 可选的操作掩码。如果此掩码不为空,那么它必须为8位并且尺寸要和输入图像images[i]一致。非零掩码用于标记出统计直方图的数组元素数据。

  • hist: 输出的目标直方图,一个二维数组

  • dims: 需要计算直方图的维度,必须是正数且并不大于CV_MAX_DIMS(在opencv中等于32)

  • histSize: 每个维度的直方图尺寸的数组

  • ranges: 每个维度中bin的取值范围

  • uniform: 直方图是否均匀的标识符,有默认值true

  • accumulate: 累积标识符,有默认值false,若为true,直方图再分配阶段不会清零。此功能主要是允许从多个阵列中计算单个直方图或者用于再特定的时间更新直方图.

计算完直方图之后 需要将