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()
相关推荐
私人珍藏库3 分钟前
【Android】BotHub-多模型AI机器人聚合库-内置免费模型
android·人工智能·智能手机·app·工具·多功能
老马聊技术11 分钟前
AI对话功能之SpringBoot整合Vue3
vue.js·人工智能·spring boot·后端
阿寻寻11 分钟前
【人工智能学习260612-软件测试篇】小工具实现 [特殊字符] Prompt工程 + RAG思路 + API调用 + 自动化测试
人工智能·功能测试·学习·prompt
甲维斯16 分钟前
测一波Kimi K2.7,消耗一周配额!
前端·人工智能·游戏开发
石山代码17 分钟前
给照片装上 AI 引擎:ACDSee 2025 安装详细步骤
人工智能
chase_my_dream23 分钟前
A-LOAM中scanRegistration.cpp详细讲解
c++·人工智能·自动驾驶
ai_xiaogui25 分钟前
AI Starter全面开源在即!PanelAI测试版即将上线,客户端+后端全开源,本地AI一键部署神器
人工智能·panelai测试版上线·本地ai一键部署系统·客户端后端开源·ai starter全面开源·跨平台ai模型管理工具·ai starter开源
邵宇然26 分钟前
Pin、Unpin 与 Tokio 异步运行时:自引用结构在异步环境中的内存安全保证
人工智能
逐米时代34 分钟前
制造型企业AI智能体实施步骤详解:提升协同效率的实战指南
大数据·人工智能