图像处理之OpenCV - 缩放/旋转/裁剪/加噪声/高斯模糊

Github地址

@ 缩放

 void cv::resize ( InputArray      src,
OutputArray dst,
Size dsize,
double fx = ,
double fy = ,
int interpolation = INTER_LINEAR
)

@ 旋转

aaarticlea/png;base64,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" alt="" />

 Mat cv::getAffineTransform ( const Point2f src[],
const Point2f dst[]
)

根据上图得到src和dst三个点的转换坐标Point2f src[], Point2f dst[];

由getAffineTransform函数得到转换矩阵M;

 void cv::warpAffine ( InputArray src,
OutputArray dst,
InputArray M,
Size dsize,
int flags = INTER_LINEAR,
int borderMode = BORDER_CONSTANT,
const Scalar &borderValue = Scalar()
)

由warpAffine根据上述得到的矩阵M进行稠密仿射转换操作;

@ 裁剪

 cv::Mat::Mat ( const Mat &m,
const Rect &roi
)

直接由Mat的构造函数即可得到 Mat m的局部图像;

@ 加噪声

@-@ 步骤

创建噪声Mat: cv::Mat的构造函数;

生成随机数种子:RNG的构造函数;

将随机数填充到噪声Mat中:RNG::fill()函数;

将图像与噪声矩阵相加即可:cv::add()函数;

@-@ 重点函数讲解

 void cv::RNG::fill ( InputOutputArray mat,
int distType,
InputArray a,
InputArray b,
bool saturateRange = false
)

函数作用:对矩阵mat填充随机数。

参数:

随机数的产生方式有参数2来决定,如果为参数2的类型为RNG::UNIFORM,则表示产生均匀分布的随机数,如果 为RNG::NORMAL则表示产生高斯分布的随机数。

对应的参数3和参数4为上面两种随机数产生模型的参数。比如说如果随机数产生模型为均匀分布,则参数a表示均匀分布的下限,参数b表示上限。如果随机数产生模型为高斯模型,则参数a表示均值,参数b表示方差。

参数5只有当随机数产生方式为均匀分布时才有效,表示的是是否产生的数据要布满整个范围。

备注:需要注意的是用来保存随机数的矩阵mat可以是多维的,也可以是多通 道的,目前最多只能支持4个通道。

@-@ 核心code

     cv::Mat img_output(img_input.size(), img_input.type());
cv::Mat noise(img_input.size(), img_input.type()); /**创建一个噪声矩阵*/
cv::RNG rng(time(NULL));
// rng.fill(noise, cv::RNG::UNIFORM, 0, 200); /**均匀分布*/
rng.fill(noise, cv::RNG::NORMAL, , ); /**高斯分布*/
cv::add(img_input, noise, img_output);

@ 高斯滤波

具体操作:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。

 void cv::GaussianBlur ( InputArray src,
OutputArray dst,
Size ksize,
double sigmaX,
double sigmaY = ,
int borderType = BORDER_DEFAULT
)

功能:对输入的图像src进行高斯滤波后用dst输出;

参数:

ksize为高斯滤波器模板大小-

sigmaX和sigmaY分别为高斯滤波在横向和竖向的滤波系数;(?未理解)

borderTyep为边缘点插值类型;

上一篇:Python 图像处理 OpenCV (5):图像的几何变换


下一篇:Can't create/write to file '/tmp/MLjnvU95' (Errcode: 13 - Permission denied)