Welcome to ROSMASTER M1 repository
10. Affine Transformation
Affine transformation
Affine Transformation (Affine Transformation or Affine Map) is a linear transformation from two-dimensional coordinates (x, y) to two-dimensional coordinates (u, v). Its mathematical expression is as follows:
The corresponding homogeneous coordinate matrix representation is: 
Affine transformation maintains the "straightness" of two-dimensional graphics (a straight line remains a straight line after an affine transformation) and "parallelism" (the relative position relationship between straight lines remains unchanged, parallel lines remain parallel lines after an affine transformation, and the position order of the points on the straight lines does not change). Three pairs of non-collinear corresponding points determine a unique affine transformation. The rotation and stretching of an image is an image affine transformation. Affine transformation also requires an M matrix. However, due to the complexity of affine transformation, it is generally difficult to find this matrix directly. OpenCV provides a method to automatically solve M based on the correspondence between the three points before and after the transformation. This function is:
xxxxxxxxxxM=cv2.getAffineTransform(pos1,pos2)
The two positions are the corresponding positions before and after the transformation. The output is the affine matrix M. Then use the function cv2.warpAffine().
Code path:
xxxxxxxxxxopencv/opencv_basic/02_OpenCV Transform/05Affine transformation.ipynb
xxxxxxxxxximport cv2import numpy as npimport matplotlib.pyplot as pltimg = cv2.imread('yahboom.jpg',1)img_bgr2rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)plt.imshow(img_bgr2rgb)plt.show()# cv2.waitKey(0)
xxxxxxxxxximgInfo = img.shapeheight = imgInfo[0]width = imgInfo[1]#src 3->dst 3 (upper left, lower left, upper right)matSrc = np.float32([[0,0], [0,height-1], [width-1,0]])matDst = np.float32([[50,50], [300,height-200], [width-300,100]])#combinationmatAffine = cv2.getAffineTransform(matSrc,matDst)# mat 1 src 2 dstdst = cv2.warpAffine(img,matAffine,(width,height))img_bgr2rgb = cv2.cvtColor(dst, cv2.COLOR_BGR2RGB)plt.imshow(img_bgr2rgb)
