import cv2
import numpy as np
img=cv2.imread('C:/Users/xpp/Desktop/Lena.png')#原始图像
rows,cols=img.shape[:2]#图像的行和列
print(rows,cols)
pts1=np.float32([[150,50],[400,50],[60,450],[310,450]])#四边形的四个顶点坐标
pts2=np.float32([[50,50],[rows-50,50],[50,cols-50],[rows-50,cols-50]])#四边形的四个顶点坐标
M=cv2.getPerspectiveTransform(pts1,pts2)#图像仿射
dst=cv2.warpPerspective(img,M,(cols,rows))#图像透视
cv2.imshow("img",img)
cv2.imshow("dst",dst)
cv2.waitKey()
cv2.destroyAllWindows()460 460


算法:透视变换,也叫投影变换,是将矩形映射为任意四边形。仿射变换则是将矩形映射为任意平行四边形,
透视变换经过两次变换:四边形变换到正方形+正方形变换到四边形:
dst(x, y)= src((M11·x+M12·y+M·13)/(M31·x+M32·y+M·33), (M21·x+M22·y+M·23)/(M31·x+M32·y+M·33))

retval=cv2.getPerspectiveTransform(src, dst)
dst=cv2.warpPerspective(src, M, dsize[, flags[, borderMode[, borderValue]]])

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!