图像处理入门:几何变换

    图像的几何变换主要包括:平移、扩大与缩小、旋转、仿射、透视等等。在OpenCV中,cv2.resize()实现扩大或者缩小,cv2.warpAffine()实现平移、旋转(cv2.getRotationMatrix2D(旋转中心,旋转角度,旋转后的缩放因子)函数作为变换矩阵)和仿射变换(cv2.getAffineTransform(变换前的3个点,变换后的3个点)函数用来创建2*3的变换矩阵),cv2.warpPerspective()实现透视变换(cv2.)。
     cv.resize()接收的参数有:原图,目标图像,目标图像大小,水平轴的比例因子,垂直轴的比例因子和插值方法。
    在仿射变换中,原图中所有的平行线在结果图像中同样平行。为了创建这 个矩阵我们需要从原图像中找到三个点以及他们在输出图像中的位置。然后 cv2.getAffineTransform 会创建一个 2x3 的矩阵,最后这个矩阵会被传给 函数cv2.warpAffine,该函数 接受三个参数,需要变换的原始图像,移动矩阵M(2*3的变换矩阵)以及变换的图像大小(这个大小如果不和原始图像大小相同,那么函数会自动通过插值来调整像素间的关系).
    对于透视变换,我们需要一个 3x3 变换矩阵。在变换前后直线还是直线。要构建这个变换矩阵,你需要在输入图像上找 4 个点,以及他们在输出图像上对应的位置。这四个点中的任意三个都不能共线。这个变换矩阵由cv2.getPerspectiveTransform() 函数构建。然后把这个矩阵传给函数cv2.warpPerspective,该函数接受的参数同函数 cv2.warpAffine的参数。
    在OpenCV中目前支持5种插值算法最邻近INTER_NEAREST、双线性(默认)INTER_LINEAR 、基于像素区域INTER_AREA 、三次插值INTER_CUBIC 及兰索斯插值INTER_LANCZOS4