1. Norm的类型
NORM_L1: L1 范数(曼哈顿范数)。数组中所有元素绝对值之和。
NORM_L2: L2 范数(欧几里得范数)。数组中所有元素平方和的平方根。
NORM_INF:无穷范数(最大绝对值范数)。数组中所有元素绝对值的最大值。
2.计算单个数组中的Norm函数
单个数据就是计算标准的Norm函数,按照类型进行计算即可
double norm(InputArray src1, int normType = NORM_L2, InputArray mask = noArray());
参数解释
@param src1第一个输入数组。
@param normType规范类型(参见#NormTypes)。
@param mask可选操作掩码;它必须与src1类型具有相同的大小。
示例
Mat mat = Mat(Size(1, 2), CV_8SC1);
mat.at<int>(0, 0) = 2;
mat.at<int>(1, 0) = 6;
double d = norm(mat, NORM_L2);
cout << "计算结果:" << d<<endl;
返回结果:
3.计算两个数组的Norm函数
这个函数相当于计算两个数组的欧式距离,如果是点数组,就是点的距离。
double norm(InputArray src1, InputArray src2,
int normType = NORM_L2, InputArray mask = noArray());
参数解释:
@param src1第一个输入数组。
@param src2第二个输入数组的大小和类型相同的src1。
@param normType规范类型(参见#NormTypes)。
@param mask可选操作掩码;它必须与src1类型具有相同的大小。
Mat mat = Mat(Size(1, 2), CV_8SC1);
mat.at<int>(0, 0) = 2;
mat.at<int>(1, 0) = 6;
double d = norm(mat, NORM_L2);
cout << "计算结果:" << d<<endl;
Mat mat2 = Mat(Size(1, 2), CV_8SC1);
mat2.at<int>(0, 0) = 1;
mat2.at<int>(1, 0) = 0;
double d2 = norm(mat2, NORM_L2);
cout<<"计算结果:" << d2<<endl;
double ds = norm(mat, mat2,NORM_L2);
cout << "计算结果:" <<ds<<endl;
运行结果:
就是按照每个点的距离求平方和,再平方根。sqrt((2-1)*(2-1)+(6-0)*(6-0))=6.08276。