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()
相关推荐
m0_634666732 分钟前
Zero 和 Spec Kit:AI Agent 正在把“编程”推向更显式的契约时代
人工智能·ai
QBoson5 分钟前
Cell :D-SPIN 从单细胞转录组构建调控网络,解析细胞扰动响应底层逻辑
人工智能·神经网络·机器学习
XD7429716367 分钟前
科技早报晚报|2026年5月16日:语音代理平台、苹果构建控制面与白盒 AI 渗透测试,今晚更值得跟进的 3 个技术机会
人工智能·科技·科技新闻·应用安全·开发者工具
吃好睡好便好10 分钟前
在Matlab中绘制二维等高线图
开发语言·人工智能·学习·算法·matlab
财经资讯数据_灵砚智能11 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年5月16日
大数据·人工智能·python·信息可视化·自然语言处理
IT_陈寒11 分钟前
Java的Stream.peek()千万别乱用,血泪教训
前端·人工智能·后端
想你依然心痛11 分钟前
HarmonyOS 6(API 23)实战:基于悬浮导航、沉浸光感与HMAF的“灵犀智脑“——PC端AI智能体工作流编排平台
人工智能·华为·harmonyos·智能体
郭龙飞98013 分钟前
OpenClaw 对接企业微信实操教程 完整配置流程
人工智能·windows·机器人·企业微信
穗余14 分钟前
大模型注意力机制(Attention)精讲总结
人工智能·深度学习·自然语言处理
2zcode15 分钟前
基于改进YOLOv8与BiLSTM的智能安防盗窃行为识别系统-融合CBAM注意力机制与ByteTrack多目标跟踪
人工智能·yolo·目标跟踪