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()
相关推荐
weixin_446934036 分钟前
多分类暴露变量的亚组分析森林图功能上线了,R语言搞不了风暴统计平台一键搞定
人工智能·机器学习·分类·数据挖掘·r语言
明月_清风7 分钟前
🚀 超快!使用 Unsloth 轻量化微调 Llama 3.1 8B 实战指南
人工智能
Yao.Li15 分钟前
Dify 本地环境忘记登录密码问题排障文档
人工智能·python
RD_daoyi16 分钟前
谷歌SEO新手入门:以SEO为主、GEO为辅,精准打造高转化内容与用户人群
大数据·人工智能·爬虫·搜索引擎
用户987456799535917 分钟前
#给 AnythingLLM 实现本地文件夹自动同步
人工智能
米花丶19 分钟前
同样的 while(true),不同的工程深度:Claude Code 源码中的 Agent 设计启示
人工智能·claude
liliangcsdn23 分钟前
对基于Pydantic BaseModel的实例进行JSON序列化
人工智能·json·全文检索
TDengine (老段)27 分钟前
TDengine IDMP 工业数据建模 —— 元素与数据查询
大数据·数据库·人工智能·物联网·时序数据库·tdengine·涛思数据
志栋智能32 分钟前
轻量级部署:低成本实现混合云环境自动化巡检
运维·网络·人工智能·自动化
点云SLAM39 分钟前
Qt+PCL手把手教材(第11讲)——PCL库PCLVisualizer点云可视化以及与 VTK 交互器(Interactor)详解和代码示例
人工智能·交互·3d数据可视化·pcl点云库·qt+pcl·pclvisualizer使用·vkt