opencv —— getRotationMatrix2D、warpAffine 仿射变换

仿射变换的基本概念

 仿射变换是一种二维坐标(x, y)到二维坐标(u, v)的线性变换,其数学表达式形式如下:

  

  对应的齐次坐标矩阵表示形式为:

  

仿射变换保持了二维图形的“平直性”(直线经仿射变换后依然为直线)和“平行性”(直线之间的相对位置关系保持不变,平行线经仿射变换后依然为平行线,且直线上点的位置顺序不会发生变化)。

非共线的三对对应点可以确定一个唯一的仿射变换。

几种常见的变换形式:

  • 平移变换

image

数学形式:

image

矩阵形式:

  • 缩放变换

image

矩阵形式:

  • 旋转变换

image

矩阵形式:

变换形式汇总图:

OpenCV 中实现仿射变换,一般涉及到 getRotationMatrix2D warpAffine 这两个函数:

计算二维旋转变换矩阵:getRotationMatrix2D 函数

 

getRotationMatrix2D 函数用于计算二维旋转变换矩阵。变换会将旋转中心映射到输出图像的原点。

Mat getRotationMatrix2D(Point2f center, double angle, double scale);

  • center,源图像的旋转中心。最终会作为输出图像原点。
  • angle,旋转角度。角度 > 0,表示逆时针旋转(坐标原点是左上角)。
  • scale,缩放系数。

借鉴博客:https://www.cnblogs.com/shine-lee/p/10950963.html

https://www.cnblogs.com/liekkas0626/p/5238564.html

https://www.cnblogs.com/houkai/p/6660272.html

猜你喜欢

转载自www.cnblogs.com/bjxqmy/p/12337581.html