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()
相关推荐
lilihuigz7 分钟前
WordPress AI代理:开源CMS如何成为智能网络操作系统的核心驱动力 - WP站长
人工智能·开源·cms
不知名的老吴13 分钟前
一文看懂:针对大语言模型的提示注入攻击
人工智能·语言模型·自然语言处理
yantaohk16 分钟前
PCDN还能赚钱吗?普通人用闲置宽带赚钱的机会、收益和风险分析
大数据·人工智能·内容运营
小妖同学学AI26 分钟前
天啊!现在连AI团队都能一键“召唤”了?!零代码搞定智能应用开发!
人工智能
MediaTea28 分钟前
AI 术语通俗词典:ID3 算法
人工智能·算法
薛定猫AI31 分钟前
【深度解析】Open Design 本地优先 AI 设计系统:用多模型 Agent 生成高保真 UI 原型
人工智能·ui
Old Uncle Tom33 分钟前
《企业AI成功部署实战指南:51 次成功部署的经验教训》给我们的启发
人工智能
卷卷说风控40 分钟前
【卷卷观察】Agent Skills 为什么突然火了?我花了一晚上研究,结论有点反直觉
人工智能
deephub1 小时前
BM25 + Vectors:为什么真实 RAG 系统通常两者都需要
人工智能·大语言模型·向量检索·rag·bm25
愚公搬代码1 小时前
【愚公系列】《AI漫剧创作一本通》006-剧本拆解,把小说改编为可落地的脚本(拆剧本,把故事变成可拍的文本)
人工智能·ai漫剧