用的是cv2.getAffineTransform这个函数实现
在这里插入代码片
from matplotlib import pyplot as plt
import cv2
import numpy as np
img=cv2.imread('E:/cat.jpg') #路径名中不能有中文,会出错
s=img.size
print(img.shape) #输出三维向量(500,500,3)
p1 = np.float32([[50,50],[200,50],[50,200]]) #变换前
p2 = np.float32([[60,40],[210,40],[60,150]]) #变换后,相当于平移,可以通过坐标平移,放缩,旋转图像
#p1 = np.array([[50,50],[200,50],[50,200]],np.float32) #也可以写成这种形式,生成float类型数组
#p2 = np.array([[10,100],[200,20],[100,250]],np.float32)
transform = cv2.getAffineTransform(p1,p2) #从位置1放射变换到位置2
res = cv2.warpAffine(img,transform,(500,500)) #将img图像通过M坐标变换为图像res,变换后的图像大小为500*500(坐标轴大小)
plt.subplot(121) #subplot为matplotlib.pyplot中的函数#三个参数,分别代表子图的行数,列数,图索引号。
plt.imshow(img[:,:,::-1]) #image表示待处