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()
相关推荐
小王毕业啦几秒前
2008-2023年 全国统一大市场发展水平
大数据·人工智能·数据挖掘·数据分析·数据统计·社科数据·实证数据
lally.1 分钟前
Kaggle Binary Classification with a Bank Dataset逻辑回归实现(准确率0.94539)
人工智能·算法·机器学习·逻辑回归
xun_xin6667 分钟前
如何解决Qt与OpenCV编译器不匹配问题
开发语言·qt·opencv
500佰9 分钟前
AI 财务案例 普通财务人的AI in ALL
前端·人工智能
桂花饼12 分钟前
GPT-5.1-Codex-Max:原生“记忆压缩”重塑编程范式,让 AI 连续写代码 24 小时不再是梦
人工智能·gpt·ai绘图·nano banana 2·图像生成api·openai兼容接口·gpt-5.1-codex
Mintopia13 分钟前
🌍 全球 AIGC 技术竞争格局下:Web 应用的技术自主可控思考
人工智能·aigc·trae
Mintopia18 分钟前
🏗️ 系统架构之:大模型 Token 计费方案
人工智能·架构·全栈
萤火虫的夏天25119 分钟前
虚拟环境安装tensorflow使用GPU加速,显卡:1650ti
人工智能·python·tensorflow
万俟淋曦20 分钟前
【论文速递】2025年第34周(Aug-17-23)(Robotics/Embodied AI/LLM)
人工智能·深度学习·机器学习·ai·机器人·论文·具身智能
亚马逊云开发者20 分钟前
从误判到精准:游戏社区 AI 审核的工程化实践
人工智能