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()
相关推荐
chatexcel几秒前
ChatExcel AI 表格功能详解:多模态数据自动抓取与智能结构化生成的实战效率提升
人工智能
棒棒的皮皮3 分钟前
【OpenCV】Python图像处理之掩膜
图像处理·python·opencv·计算机视觉
木头左4 分钟前
门控注意力单元与LSTM细胞状态更新的协同机制
人工智能·rnn·lstm
xhyyvr5 分钟前
VR 超凡赛车:沉浸式动感驾驶,解锁交通安全普法新体验
人工智能·vr
大千AI助手10 分钟前
马哈拉诺比斯距离:理解数据间的“真实”距离
人工智能·深度学习·机器学习·距离度量·大千ai助手·马氏距离·马哈拉诺比斯距离
玖日大大11 分钟前
基于 Hugging Face Transformers 搭建情感分析模型:从原理到实战
人工智能·学习
老蒋新思维1 小时前
创客匠人峰会复盘:AI 时代知识变现,从流量思维到共识驱动的系统重构
大数据·人工智能·tcp/ip·重构·创始人ip·创客匠人·知识变现
shayudiandian2 小时前
用深度学习实现语音识别系统
人工智能·深度学习·语音识别
EkihzniY8 小时前
AI+OCR:解锁数字化新视界
人工智能·ocr
东哥说-MES|从入门到精通8 小时前
GenAI-生成式人工智能在工业制造中的应用
大数据·人工智能·智能制造·数字化·数字化转型·mes