opencv提供了很多Mat的操作,其中涉及到两个重要的类:MatOp和MatExpr
C++: MatExpr abs(const Mat& m) C++: void absdiff(InputArray src1, InputArray src2, OutputArray dst) C = abs(A-B) is equivalent to absdiff(A, B, C) C = abs(A) is equivalent to absdiff(A, Scalar::all(0), C) C++: void add(InputArray src1, InputArray src2, OutputArray dst, InputArray mask=noArray(), int dtype=-1) C++: void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, Out- putArray dst, int dtype=-1) C++: void bitwise_and(InputArray src1, InputArray src2, OutputArray dst, InputArray mask=noArray()) C++: void bitwise_not(InputArray src, OutputArray dst, InputArray mask=noArray()) C++: void bitwise_or(InputArray src1, InputArray src2, OutputArray dst, InputArray mask=noArray()) C++: void bitwise_xor(InputArray src1, InputArray src2, OutputArray dst, InputArray mask=noArray()) C++: void calcCovarMatrix(const Mat* samples, int nsamples, Mat& covar, Mat& mean, int flags, int ctype=CV_64F) C++: void cartToPolar(InputArray x, InputArray y, OutputArray magnitude, OutputArray angle, bool an- gleInDegrees=false) C++: void magnitude(InputArray x, InputArray y, OutputArray magnitude) C++: bool checkRange(InputArray a, bool quiet=true, Point* pos=0, double minVal=-DBL_MAX, double maxVal=DBL_MAX ) C++: void compare(InputArray src1, InputArray src2, OutputArray dst, int cmpop) C++: void completeSymm(InputOutputArray mtx, bool lowerToUpper=false) C++: void convertScaleAbs(InputArray src, OutputArray dst, double alpha=1, double beta=0) C++: int countNonZero(InputArray src) C++: Mat cvarrToMat(const CvArr* arr, bool copyData=false, bool allowND=true, int coiMode=0 ) C++: void dct(InputArray src, OutputArray dst, int flags=0) C++: void idct(InputArray src, OutputArray dst, int flags=0) C++: void dft(InputArray src, OutputArray dst, int flags=0, int nonzeroRows=0) C++: void idft(InputArray src, OutputArray dst, int flags=0, int nonzeroRows=0) C++: void divide(InputArray src1, InputArray src2, OutputArray dst, double scale=1, int dtype=-1) C++: double determinant(InputArray mtx) C++: bool eigen(InputArray src, OutputArray eigenvalues, int lowindex=-1, int highindex=-1) C++: void exp(InputArray src, OutputArray dst) C++: void extractImageCOI(const CvArr* arr, OutputArray coiimg, int coi=-1 ) C++: void insertImageCOI(InputArray coiimg, CvArr* arr, int coi=-1 ) C++: void flip(InputArray src, OutputArray dst, int flipCode) C++: void gemm(InputArray src1, InputArray src2, double alpha, InputArray src3, double gamma, OutputArray dst, int flags=0 ) C++: ConvertData getConvertElem(int fromType, int toType) C++: int getOptimalDFTSize(int vecsize) C++: void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst) C++: double invert(InputArray src, OutputArray dst, int flags=DECOMP_LU) C++: void log(InputArray src, OutputArray dst) C++: void LUT(InputArray src, InputArray lut, OutputArray dst, int interpolation=0 ) C++: double Mahalanobis(InputArray v1, InputArray v2, InputArray icovar) C++: void max(InputArray src1, InputArray src2, OutputArray dst)
MatOp负责MatExpr的运算操作
class CV_EXPORTS MatOp { public: MatOp(); virtual ~MatOp(); virtual bool elementWise(const MatExpr& expr) const; virtual void assign(const MatExpr& expr, Mat& m, int type=-1) const = 0