OpenCV 数字图像灰度直方图(2)

创建直方图 cvCreateHist()

OpenCV中用cvCreateHist()创建一个直方图:

CvHistogram* cvCreateHist(
 int dims, //直方图维数
 int* sizes,//直翻图维数尺寸
 int type, //直方图的表示格式
        float** ranges=NULL, //图中方块范围的数组
 int uniform=1 //归一化标识
 );

size数组的长度为dims,每个数表示分配给对应维数的bin的个数。如dims=3,则size中用[s1,s2,s3]分别指定每维bin的个数。
type有两种:CV_HIST_ARRAY 意味着直方图数据表示为多维密集数组 CvMatND; CV_HIST_TREE 意味着直方图数据表示为多维稀疏数组 CvSparseMat。

ranges就是那个复杂的不好理解的thresh的范围,他的内容取决于uniform的值。uniform为0是均匀的,非0时不均匀。

计算图像直方图的函数为CalcHist():

void cvCalcHist(
 IplImage** image, //输入图像(也可用CvMat**)
 CvHistogram* hist, //直方图指针
                int accumulate=0, //累计标识。如果设置,则直方图在开始时不被清零。
 const CvArr* mask=NULL //操作 mask, 确定输入图像的哪个象素被计数
 );

要注意的是这个函数用来计算一张(或多张)单通道图像的直方图,如果要计算多通道,则用这个函数分别计算图像每个单通道。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/70b448ceeafa7b3d60b73973f6ff6c98.html