opencv-图像透视变换

透射变换是视角变化的结果,是指利用透视中心,像点,目标点共线的条件,按透视旋转定律使承影面(透视面)绕迹线(透视轴旋转某一角度,破坏原有的投影光束,仍能保持承影面上投影几何图形不变的变化)

它的本质将图像投影到一个新的视平面,其通用变换公式为

其中,(u,v)是原始图像像素坐标,w取值为1,(x=x'/z',y=y'/z')是透射变换后的结果。后面的矩阵称为透视变换矩阵,一般情况下我们将其分为三部分,如下图

T1(a00,a01,a10,a11)表示对图像进行线性代换,T2(a02,a12)对图像进行平移,T3对图像进行透射变换,a22一般设为1

透射变换所需矩阵为3*3的矩阵,矩阵的最后一个数固定为1,所有需要求解这个矩阵的8个方程,而一个点(x,y)可以构建两个方程,所以共需要原图像4个点以及透射变换后对应4个点即可

opencv中,通过函数cv2.getPerspectiveTransform找到变换矩阵,将cv2.warpPerspective应用于此3x3变换矩阵

python 复制代码
import numpy as np
import cv2
img = cv2.imread('1.jpg')
rows,cols = img.shape[:2]#获取图像长和宽
pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]])
pts2 = np.float32([[100,145],[300,100],[80,290],[310,300]])
T = cv2.getPerspectiveTransform(pts1, pts2)
dst = cv2.warpPerspective(img, T, (cols,rows))
cv2.imshow('1.jpg', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
相关推荐
刘 大 望1 分钟前
RAG相关技术介绍及Spring AI中使用--第二期
java·人工智能·spring·ai·chatgpt·aigc·etl
davidson14713 分钟前
Ubuntu配置Claude
linux·人工智能·ubuntu·claude
小布的学习手记4 分钟前
拒绝“传话游戏”!DenseNet 如何让神经网络开启“群聊”模式
人工智能·神经网络·游戏
甄心爱学习6 分钟前
【自然语言处理】三种典型的词向量学习方法
人工智能·自然语言处理·学习方法
AI数据皮皮侠7 分钟前
基于XGBoost+LSTM+SARIMA模型的非线性时间序列预测(Paddle)
人工智能·lstm·paddle
奔跑的卡卡8 分钟前
Web开发与AI融合-第二篇:TensorFlow.js实战:在浏览器中运行AI模型
前端·人工智能·tensorflow
智星云算力8 分钟前
GPU算力租用平台深度解析:响应速度、算力利用率与售后支持的核心逻辑
人工智能·深度学习·gpu算力·智星云·gpu算力租用
IT_陈寒9 分钟前
Vue的响应式居然在这里埋坑,差点加班到天亮
前端·人工智能·后端
Agent产品评测局10 分钟前
企业超自动化落地,如何实现端到端的全流程闭环?2026企业级智能体架构与全景选型深度解析丨Agent产品测评局
运维·人工智能·ai·chatgpt·架构·自动化