图像的几何变换主要包括:平移、扩大与缩小、旋转、仿射、透视等等。在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 个点,