OpenCV:面向Python几何变换

文章目录

  • 缩放
  • 翻转
  • 仿射
  • 透视
  • 重映射

最近做实验用到了几何变换,因此系统的总结了一下几何变换

提高几何变换,我们就想到了在初高中做数学题目时候的场景,应用几何变换把困难的题目化简为通俗易懂的题目,从而得到解答。

在百度上查看了一下关于几何变换的定义:
OpenCV:面向Python几何变换_第1张图片

在图像处理当中,几何变换是指将一幅图像映射到另外一幅图内的操作。
而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:表示边界值

希望可以对大家的学习有所帮助,如有遗漏或者错误请在评论区中指正!!!

你可能感兴趣的