CV_EXPORTS void swap(Mat& a, Mat& b);
//! converts array (CvMat or IplImage) to cv::Mat
将CvMat或者IplImage装换为Mat
CV_EXPORTS Mat cvarrToMat(const CvArr* arr, bool copyData=false,
bool allowND=true, int coiMode=0);
//! extracts Channel of Interest from CvMat or IplImage and makes cv::Mat out of it.
提取CvMat或者IplImage中的感兴趣通道,并以Mat输出
CV_EXPORTS void extractImageCOI(const CvArr* arr, OutputArray coiimg, int coi=-1);
//! inserts single-channel cv::Mat into a multi-channel CvMat or IplImage
将单通道Mat插入CvMat或者IplImage中
CV_EXPORTS void insertImageCOI(InputArray coiimg, CvArr* arr, int coi=-1);
//! adds one matrix to another (dst = src1 + src2)
两矩阵相加
CV_EXPORTS_W void add(InputArray src1, InputArray src2, OutputArray dst,
InputArray mask=noArray(), int dtype=-1);
//! subtracts one matrix from another (dst = src1 - src2)
两矩阵相减
CV_EXPORTS_W void subtract(InputArray src1, InputArray src2, OutputArray dst,
InputArray mask=noArray(), int dtype=-1);
//! computes element-wise weighted product of the two arrays (dst = scale*src1*src2)
计算两矩阵的加权积,权值默认为1
CV_EXPORTS_W void multiply(InputArray src1, InputArray src2,
OutputArray dst, double scale=1, int dtype=-1);
//! computes element-wise weighted quotient of the two arrays (dst = scale*src1/src2)
计算两矩阵的加权商,权值默认为1
CV_EXPORTS_W void divide(InputArray src1, InputArray src2, OutputArray dst,
double scale=1, int dtype=-1);
//! computes element-wise weighted reciprocal of an array (dst = scale/src2)
计算加权倒数,权值默认为1
CV_EXPORTS_W void divide(double scale, InputArray src2,
OutputArray dst, int dtype=-1);
//! computes sum of array elements
计算矩阵内所有元素总和
CV_EXPORTS_AS(sumElems) Scalar sum(InputArray src);
//! computes the number of nonzero array elements
计算矩阵内非零元素个数
CV_EXPORTS_W int countNonZero( InputArray src );
//! computes mean value of selected array elements
计算所选矩阵的均值
CV_EXPORTS_W Scalar mean(InputArray src, InputArray mask=noArray());
//! computes mean value and standard deviation of all or selected array elements
计算所选矩阵的矩阵和标准差
CV_EXPORTS_W void meanStdDev(InputArray src, OutputArray mean, OutputArray stddev,
InputArray mask=noArray());
//! finds global minimum and maximum array elements and returns their values and their locations
寻找全局最小值和最大值,返回其值与位置
CV_EXPORTS_W void minMaxLoc(InputArray src, CV_OUT double* minVal,
CV_OUT double* maxVal=0, CV_OUT Point* minLoc=0,
CV_OUT Point* maxLoc=0, InputArray mask=noArray());
CV_EXPORTS void minMaxIdx(InputArray src, double* minVal, double* maxVal,
int* minIdx=0, int* maxIdx=0, InputArray mask=noArray());
//! computes square root of each matrix element (dst = src**0.5)
计算矩阵中每个元素的平方根
CV_EXPORTS_W void sqrt(InputArray src, OutputArray dst);
//! computes exponent of each matrix element (dst = e**src)
CV_EXPORTS_W void exp(InputArray src, OutputArray dst);
//! computes natural logarithm of absolute value of each matrix element: dst = log(abs(src))
计算自然对数
CV_EXPORTS_W void log(InputArray src, OutputArray dst);
//! computes cube root of the argument
计算立方根
CV_EXPORTS_W float cubeRoot(float val);
//! adds scaled array to another one (dst = alpha*src1 + src2)
CV_EXPORTS_W void scaleAdd(InputArray src1, double alpha, InputArray src2, OutputArray dst);
//! computes weighted sum of two arrays (dst = alpha*src1 + beta*src2 + gamma)
计算两矩阵的加权和权值默认为1
CV_EXPORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2,
double beta, double gamma, OutputArray dst, int dtype=-1);
//! scales array elements, computes absolute values and converts the results to 8-bit unsigned integers:
扫描矩阵元素,计算绝对值并转为8位无符号整型
dst(i)=saturate_cast<uchar>abs(src(i)*alpha+beta)
CV_EXPORTS_W void convertScaleAbs(InputArray src, OutputArray dst,
double alpha=1, double beta=0);
//! transforms array of numbers using a lookup table: dst(i)=lut(src(i))
CV_EXPORTS_W void LUT(InputArray src, InputArray lut, OutputArray dst,
int interpolation=0);
int interpolation=0);
<------------------------------------------------------------模糊处理以及腐蚀和膨胀--------------------------------------------------------------
应用:
imshow("原图",image);
GaussianBlur(image,image,Size(5,5),1.5);
imshow("高斯滤波",image);
Mat eroded;//形态学处理,腐蚀
erode(image,eroded,Mat());
Mat dilated;//形态学处理,膨胀
dilate(image,dilated,Mat());
imshow("高斯滤波",image);
Mat eroded;//形态学处理,腐蚀
erode(image,eroded,Mat());
Mat dilated;//形态学处理,膨胀
dilate(image,dilated,Mat());
原函数参数:
GaussianBlur( InputArray src,
OutputArray dst, Size ksize,
double sigmaX, double sigmaY=0,
int borderType=BORDER_DEFAULT );
高斯滤波:
src--输入矩阵
dst--输出矩阵
Size(w,h)--滤波核大小
sigmaX--X轴向标准偏差,为0表示sigmaX由滤波核计算所得
sigmaY--Y轴向标准偏差,为0表示sigmaY由滤波核计算所得
erode( InputArray src, OutputArray dst, InputArray kernel,
Point anchor=Point(-1,-1), int iterations=1,
int borderType=BORDER_CONSTANT,
const Scalar& borderValue=morphologyDefaultBorderValue() );
腐蚀:
src--输入矩阵
dst--输出矩阵
kernel--输入核,默认3x3矩阵( If element=Mat() , a 3 x 3 rectangular structuring element is used.),如需特别指定,需使用Mat getStructuringElement(int shape, Size ksize, Point anchor=Point(-1,-1)), anchor=Point(-1,-1)表示定点设为核中心。 iterations--表示迭代次数,这里默认为1表示只迭代一次
--------------------------------------------------------------------------------------------------------------------------------------------------->
OutputArray dst, Size ksize,
double sigmaX, double sigmaY=0,
int borderType=BORDER_DEFAULT );
高斯滤波:
src--输入矩阵
dst--输出矩阵
Size(w,h)--滤波核大小
sigmaX--X轴向标准偏差,为0表示sigmaX由滤波核计算所得
sigmaY--Y轴向标准偏差,为0表示sigmaY由滤波核计算所得
erode( InputArray src, OutputArray dst, InputArray kernel,
Point anchor=Point(-1,-1), int iterations=1,
int borderType=BORDER_CONSTANT,
const Scalar& borderValue=morphologyDefaultBorderValue() );
腐蚀:
src--输入矩阵
dst--输出矩阵
kernel--输入核,默认3x3矩阵( If element=Mat() , a 3 x 3 rectangular structuring element is used.),如需特别指定,需使用Mat getStructuringElement(int shape, Size ksize, Point anchor=Point(-1,-1)), anchor=Point(-1,-1)表示定点设为核中心。 iterations--表示迭代次数,这里默认为1表示只迭代一次
- borderType – Pixel extrapolation method. See borderInterpolate() for details.
- borderValue – Border value in case of a constant border. The default value has a special meaning. See createMorphologyFilter() for details.
dilate( InputArray src, OutputArray dst, InputArray kernel,
Point anchor=Point(-1,-1), int iterations=1,
int borderType=BORDER_CONSTANT,
const Scalar& borderValue=morphologyDefaultBorderValue() );
膨胀:
src--输入矩阵
dst--输出矩阵
kernel--输入核,默认3x3矩阵( If element=Mat() , a 3 x 3 rectangular structuring element is used.),如需特别指定,需使用Mat getStructuringElement(int shape, Size ksize, Point anchor=Point(-1,-1)),anchor=Point(-1,-1)表示定点设为核中心。 iterations--表示迭代次数,这里默认为1表示只迭代一次
--------------------------------------------------------------------------------------------------------------------------------------------------->