一、矩阵
Mat I,img,I1,I2,dst,A,B; double k,alpha; Scalar s;
1.加法
I=I1+I2;//等同add(I1,I2,I); add(I1,I2,dst,mask,dtype); scaleAdd(I1,scale,I2,dst);//dst=scale*I1+I2;
2.减法
absdiff(I1,I2,I);//I=|I1-I2|; A-B;A-s;s-A;-A; subtract(I1,I2,dst);
3.乘法
I=I.mul(I);//点乘,I.mul(I,3);-->I=3*I.^2 Mat C=A.mul(5/B);//==divide(A,B,C,5); A*B;矩阵相乘 I=alpha*I; Mat::cross(Mat);//三维向量(或矩阵)的叉乘,A.cross(B) double Mat::dot(Mat);//2个向量(或矩阵)的点乘的结果,A.dot(B) mul-------multiply pow(src,double p,dst);//如果p是整数dst(I)=src(I)^p;其他|src(I)|^p
4.除法
divide(I1,I2,dst,scale,int dtype=-1);//dst=saturate_cast(I1*scale/I2); A/B;alpha/A;都是点除
5.转换
I.convertTo(I1,CV_32F);//类型转换 A.t();//转置 flip(I,dst,int flipCode);//flipCode=0是上下翻转,>0时左右翻转,<0时一起来 sqrt(I,dst); cvtColor(I,dst,int code,int dstCn=0); resize:对图像进行形变
--------------------------------------------------------------------------
6.其他
Scalar s=sum(I);各通道求和 norm,countNonZero,trace,determinant,repeat都是返回Mat或者Scalar countNonZero:用来统计非零的向量个数.(rows*cols个) Scalar m=mean(I);//各通道求平均 Mat RowClone=C.row(1).clone();//复制第2行 addWeight(I1,alpha,I2,beta,gamma,dst,int dtype=-1);//dst=saturate(alpha*I1+beta*I2+gamma);dtype是dst的深度
----------------------------------------------------------------------------
7.运算符
log10() exp(I,dst);//dst=exp(I);计算每个数组元素的指数 log(I,dst);//如果Iij!=0;则dstij=log(|Iij|) randu(I,Scalar::all(0),Scalar::all(255)); Mat::t()转置 Mat::inv(int method=DECOMP_LU)求逆。method=DECOMP_CHOLESKY(专门用于对称,速度是LU的2倍),DECOMP_SVD//A.inv();A.inv()*B; invert(I1,dst,int method=DECOMP_LU);//用法同上 MatExpr abs(Mat)//求绝对值 A cmpop B;A compop alpha;alpha cmpop A;这里cmpop表示>,>=,==,!=,<=,<等,结果是CV_8UC1的mask的0或255 按位运算:A logicop B;A logicop s;s logicop A;~A;这里logicop代表&,|,^ bitwise_not(I,dst,mask);//inverts所有的队列 还有bitwise_and,bitwise_or,bitwise_xor, min(A,B);min(A,alpha);max(A,B);max(A,alpha);都返回MatExpr,返回的dst和A的类型一样 double determinant(Mat);//行列式 bool eigen(I1,dst,int lowindex=-1,int highindex=-1);// bool eigen(I1,dst,I,int...);//得到特征值向量dst和对应特征值的特征向量 minMaxLoc(I1,&minVal,&maxVal,Point *minLoc=0,Point* MaxLoc=0,mask); //minLoc是2D时距原点最小的点(未考证)