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()
相关推荐
kobesdu几秒前
【ROS2实战笔记-15】ros2bag 的深度应用:从数据回放到系统级离线分析
人工智能·笔记·移动机器人·ros2
AIDF20262 分钟前
第六篇:实战出击——深度学习的“减脂”与“提速”
人工智能·深度学习·框架·推理
AI工具测评与分析5 分钟前
2026年4月GitHub热门开源项目榜单:AI智能体正式迈入工业化协作时代
人工智能·开源·github
俊哥V18 分钟前
每日 AI 研究简报 · 2026-05-08
人工智能·ai
tanis_207741 分钟前
学术论文 PDF 的版面自动还原:MinerU 对多栏排版、浮动图表与脚注区域的识别实战
人工智能·pdf·ocr
guo_xiao_xiao_1 小时前
YOLOv11室内果蔬展示苹果目标检测数据集-37张-apple-1_3
人工智能·yolo·目标检测
AI学长1 小时前
数据集|草莓成熟度目标检测数据集-3类530张图
人工智能·目标检测·草莓成熟度目标检测数据集
湘美书院--湘美谈教育1 小时前
湘美书院谈AI教育经验集:如何用AI整理湖湘文化经义大略
大数据·人工智能·深度学习·神经网络·机器学习
月落归舟1 小时前
深度讲解 AI Agent 完整运行全流程
人工智能
love在水一方1 小时前
【翻译】NavDreamer: Video Models as Zero-Shot 3D Navig
人工智能·机器学习