图像的矩:
矩函数在图像分析中有着广泛的应用,如模式识别、目标分类、目标识别、与方位估计图像编码与重构等,一个从一幅数字图像计算出来的矩集,通常描述了该图像形状的全部特征,并且提供了大量关于该图像不同类型的的几何特征信息,比如大小,方向,位置,以及形状等图像矩的这种特征被广泛地应用到各种图像处理和计算机视觉和机器人技术的领域的目标识别与方位估计中,一阶矩与图像的形状有关,而二阶矩显示曲线围绕直线平均度的扩展程度,三阶矩则是关于平均值的对称性测量,由二阶矩和三阶矩可以导出7组不变矩,而不编矩是图像的统计特性,满足平移,伸缩,旋转均不变性,在图像识别领域得到了广泛的利用
三个函数配合求取:
1.moments计算图像所有的矩,最高到三阶
2.contoursArea来计算图像的轮廓的面积。
3.arcLength来计算轮廓或者曲线的长度

1.矩的计算:moments()函数
矩用来计算形状的重心,面积,主轴和其他形状特征。
C++:Moments moments(InputArray array,bool binaryImage=false)
1.参数1表示输入图像,单通道,8位或浮点的二维数组
2.参数2表示 bool类型的binaryImage此参数仅仅对图像适用有默认false还有true所有的非零像素为1

2.计算轮廓的面积:contourArea()函数
C++:double contourArea(InputArray contour,bool oriented=false)
1.参数1.表示输入的向量,二维点(轮廓的顶点)可以为std::vector或者是Mat类型的
2.参数2.表示面向区域的标识符,若为true,该函数返回一个带符号的面积值,面积的正负由轮廓的方向决定的(顺时针还是逆时针)根据这个特性我们可以根据面积的特性来确定轮廓的位置,参数有默认值,表示以绝对值返回,不带符号
3.计算轮廓的长度:arcLength()函数
用于计算轮廓的长度或者曲线的长度
C++:double arcLength(InputArray curve,bool closed)
1.参数1.输入的二维点集,可以为std::vector也可以为Mat类型
2.参数2.bool类型的closed一个用于指示曲线是否封闭的表示符,有默认值表示曲线封闭

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐