- 图像的矩
在opencv中,如何计算一个图像的矩呢?一般由moments、contourArea、arcLength这三个函数配合求取:
使用moments计算图像所有的矩
使用contourArea来计算轮廓面积
使用arcLength来计算轮廓或曲线长度
//计算一个形状的面积
vector<Point> contour;
contour.push_back(Point2f(0,0));
contour.push_back(Point2f(10,10));
contour.push_back(Point2f(0,10));
//contour.push_back(Point2f(10,0));
// 三角形的面积。。。。记得,points的顺序要构成凸边形才能计算出面积,否则结果为0
double area = contourArea(contour,false);
这是Moments的openCV定义,可以看出,通过moments方法计算出来的Moments结构,包含了不低于3阶的矩特征值。
直方图对比:
对于直方图来说,一个可不或缺的工具是用某些具体的标准来比较两个直方图的相似度。要对两个直方图进行比较,需要选择一个衡量直方图相似度的对比标准。在OpenCV中,使用的是compareHist()函数进行对比。
函数原型如下:
double compareHist(InputArray H1,InputArray H2,int method);
method是需要选择的距离标准,有如下取值: