最近做实验用到了几何变换,因此系统的总结了一下几何变换
提高几何变换,我们就想到了在初高中做数学题目时候的场景,应用几何变换把困难的题目化简为通俗易懂的题目,从而得到解答。
在百度上查看了一下关于几何变换的定义:
在图像处理当中,几何变换是指将一幅图像映射到另外一幅图内的操作。
而OpenCV提供了多个与映射有关的函数,通过熟悉运用这些函数,可以高效的实现一副图像到另一幅图像的映射,从而高效的完成图像的操作。
图像的几何变换可以分为:缩放、翻转、仿射、透视、重映射
缩放
在OpenCV中,使用cv2.resize()实现
形式为:cv2.resize(src,desize[,fx[,fy[,interpolation]]])
src:表示要进行处理的图片
desize:表示输出图像的大小
fx,fy:分别表示水平和垂直方向缩放的比例
interpolation:表示插值方式(默认使用双线性插值)
翻转
在OpenCV中,使用cv2.flip()实现
形式为:cv2.flip(src,flipcode)
src:表示要进行处理的图片
flipcode:表示旋转类型
当flipcode为0时候,绕x轴旋转;当flipcode为正数时候,绕y轴旋转;当flipcode为负数时候,同时绕xy轴旋转。
仿射
在OpenCV中,使用cv2.warpAffine()实现
形式为:cv2.warpAffine(src,M,dsize[,flags[,borderMode[,borderValue]]])
src:表示要进行处理的图片
M:一个变换矩阵
desize:表示输出图像的大小
flags:表示插值方式
borderMode:表示边类型
borderValue:表示边界值
在使用的时候,可以将后面三个参数省略,利用M将原始图像转换为所需要的图像。
例如:cv2.warpAffine(src,M,dsize)
透视
在OpenCV中,利用cv2.warpPerspective()实现
形式为:cv2.warpPerspective(src,M,dsize[,flags[,borderMode[,borderValue]]])
src:表示要进行处理的图片
M:一个变换矩阵
desize:表示输出图像的大小
flags:表示插值方式
borderMode:表示边类型
borderValue:表示边界值
注意与仿射时候M代表的矩阵时不同的,这里代表的3*3的变换矩阵。
重映射
在OpenCV中,cv2.remap()提供了更方便的映射方式
形式为:cv2.remap(src,map1,map2,interpolation[,borderMode[,borderValue]])
src:表示要进行处理的图片
map1和map2:分别表示两种可能的值
interpolation:表示插值方式
borderMode:表示边类型
borderValue:表示边界值
希望可以对大家的学习有所帮助,如有遗漏或者错误请在评论区中指正!!!