三点映射变换
三点映射变换会将图像转换为任意的平行四边形,cv2.getAffineTransform()函数用于计算其转换矩阵,基本格式如下。
m = cv2.getAffineTransform(src, dst)
参数说明如下。
src为原图像中3个点的坐标。
dst为原图像中3个点在目标图像中的对应坐标。
cv2.getAffineTransform()函数将src和dst中的3个点作为平行四边形左上角、右上角和左下角的3个点,按原图和目标图像与3个点之间的坐标关系计算所有像素的转换矩阵。
示例代码如下。
图像的三点映射变换
import cv2
import numpy as np
img=cv2.imread('bee.jpg') #读取图像
cv2.imshow('img',img) #显示图像
height=img.shape[0] #获得图像高度
width=img.shape[1] #获得图像宽度
dsize=(width,height)
src=np.float32([[0,0],[width-10,0],[0,height-1]]) #取原图像中的3个点
dst=np.float32([[50,50],[width-100,80],
[100,height-100]]) #设置3个点在目标图像中的坐标
m = cv2.getAffineTransform(src, dst) #创建转换矩阵
img2=cv2.warpAffine(img,m,dsize) #执行转换
cv2.imshow('imgThreePoint',img2) #显示图像
cv2.waitKey(0)