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()
相关推荐
前端摸鱼匠几秒前
【AI大模型春招面试题13】残差连接(Residual Connection)与层归一化(Layer Norm)在Transformer中的作用?
人工智能·深度学习·语言模型·面试·transformer·求职招聘
重生之我要成为代码大佬12 分钟前
HuggingFace生态实战:从模型应用到高效微调
人工智能·python·大模型·huggingface·模型微调
CoderIsArt24 分钟前
深度学习编译器中的TVM 与MLR
人工智能·深度学习
wenzhangli725 分钟前
OoderAgent Apex:基于Skills化架构的热插拔启动机制
人工智能·架构
爱睡懒觉的焦糖玛奇朵29 分钟前
【工业级落地算法之人员摔倒检测算法详解】
人工智能·python·深度学习·神经网络·算法·yolo·目标检测
一水鉴天32 分钟前
从 整体设计的三个问题 到 中文能藏英文所限显 之1 20260303 codebuddy
人工智能
~央千澈~37 分钟前
《2026鸿蒙NEXT纯血开发与AI辅助》第三章:DevEco Studio 整体功能使用详解以及各个助手以及核心使用方法-卓伊凡
人工智能·鸿蒙开发·鸿蒙next
Learn Beyond Limits38 分钟前
长短期记忆网络|LSTM(Long Short-Term Memory)
人工智能·rnn·深度学习·神经网络·自然语言处理·nlp·lstm
昨夜见军贴061643 分钟前
AI报告文档审核助力本地化升级:IACheck如何支撑食品加工行业数据安全与质量协同发展
大数据·人工智能
大佐不会说日语~1 小时前
Spring AI Alibaba 模块化重构:从单体到分层架构实践
人工智能·spring·重构