改变图像的大小
需要注意的是dsize与fx和fy必须不能同时为零,也就是说要么dsize不为零而fx与fy同时可以为0,要么dsize为0而fx与fy不同时为0;resize函数的目标大小可以是任意的大小,可以不保持长宽比率。
void resize( InputArray src, OutputArray dst,
Size dsize, double fx = 0, double fy = 0,
int interpolation = INTER_LINEAR );
高斯模糊
void GaussianBlur( InputArray src, OutputArray dst, Size ksize,
double sigmaX, double sigmaY = 0,
int borderType = BORDER_DEFAULT );
src
:输入图像,即源图像,填Mat类的对象即可。它可以是单独的任意通道数的图片,但需要注意,图片深度应该为CV_8U,CV_16U,*** CV_16S, CV_32F 以及 CV_64F之一。
dst
:即目标图像,需要和源图片有一样的尺寸和类型。比如可以用Mat::Clone,以源图片为模板,来初始化得到目标图。
ksize
:高斯内核的大小。其中ksize.width和ksize.height可以不同,但他们都必须为正数和奇数(并不能理解)。或者,它们可以是零的,它们都是由sigma计算而来。
sigmaX
:表示高斯核函数在X方向的的标准偏差。
sigmaY
:表示高斯核函数在Y方向的的标准偏差。若sigmaY为零,就将它设为sigmaX,如果sigmaX和sigmaY都是0,那么就由ksize.width和ksize.height计算出来。
为了结果的正确性着想,最好是把第三个参数Size,第四个参数sigmaX和第五个参数sigmaY全部指定到。
borderType
:用于推断图像外部像素的某种边界模式。注意它有默认值BORDER_DEFAULT***。
从输入中拷贝某通道到输出的通道中
void mixChannels(const Mat* src, size_t nsrcs, Mat* dst, size_t ndsts,
const int* fromTo, size_t npairs);
提取目标轮廓
void findContours(InputOutputArray image, OutputArrayOfArrays contours,
OutputArray hierarchy, int mode,
int method, Point offset = Point());
对提取的多边形轮廓进行多边形拟合
void approxPolyDP( InputArray curve,
OutputArray approxCurve,
double epsilon, bool closed );
InputArray curve
:一般是由图像的轮廓点组成的点集
OutputArray approxCurve
:表示输出的多边形点集
double epsilon
:主要表示输出的精度,就是两个个轮廓点之间最大距离数
bool closed
:表示输出的多边形是否封闭