1 仿射变换函数
cv2.warpAffine(src, M, dsize, flags, boderMode, borderValue)
src —— 输入图像
M —— 变换矩阵。一般反映平移或旋转的关系,为InputArray类型的2×3的变换矩阵。
dsize —— 输出图像的大小。
flags —— 插值方法的组合(int 类型!)flages表示插值方式,默认为 flags=cv2.INTER_LINEAR,表示线性插值,此外还有:cv2.INTER_NEAREST(最近邻插值)cv2.INTER_AREA (区域插值)cv2.INTER_CUBIC(三次样条插值)cv2.INTER_LANCZOS4(Lanczos插值)
borderMode —— 边界像素模式(int 类型!)
borderValue —— (重点!)边界填充值; 默认情况下为0。
2 图像平移
将图像中所有的点按照指定的平移量水平或者垂直移动。
3 图像缩放
下采样:
缩小图像称为下采样(subsampled)或降采样(downsampled)
上采样:
放大图像称为上采样(upsampling),主要目的得到更高分辨率图像。
图像缩放:
图像缩放是指图像大小按照指定的比例进行放大或者缩小。
函数 cv2.resize(src,dsize=None,fx,fy,interpolation)
scr:原图
dsize:输出图像尺寸,与比例因子二选一
fx:沿水平轴的比例因子
fy:沿垂直轴的比例因子
interpolation:插值方法,默认为cv2.INTER_NEAREST
4 图像旋转
变换矩阵函数:cv2.getRotationMatrix2D(center, angle, scale)
参数:
center:图片的旋转中心
angle:旋转角度
scale:缩放比例,0.5表示缩小一半正为逆时针,负值为顺时针
5 仿射变换
通过仿射变换对图片进行旋转、平移、缩放等操作以达到数据增强的效果
线性变换从几何直观上来看有两个要点:
变换前是直线,变换后依然是直线
直线的比例保持不变
函数:
仿射变换的函数原型如下:
M = cv2.getAffineTransform(pos1,pos2)
pos1表示变换前的位置
pos2表示变换后的位置
5 透视变换
本质是将图像投影到一个新的视平面。
函数:
M = cv2.getPerspectiveTransform(pos1, pos2)
pos1表示透视变换前的4个点对应位置
pos2表示透视变换后的4个点对应位置
cv2.warpPerspective(src,M,(cols,rows))
src表示原始图像
M表示透视变换矩阵
(rows,cols)表示变换后的图像大小,rows表示行数,cols表示列数