基于OpenCV的透视变化

基本概念

透视变换(Perspective Transformation)是仿射变换的一种非线性扩展,是将图片投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping)。

原理:将二维的图片投影到一个三维视平面上,然后再转换到二维坐标下,所以也称为投影映射(Projective Mapping)。

相对仿射变换来说,改变了直线之间的平行关系

透视变换的特点

透视变换相比仿射变换更加灵活,变换后会产生一个新的四边形,但不一定是平行四边形,需要非共线的四个点才能唯一确定

变换后原图中的直线变换后依然是直线

四边形包括了所有的平行四边形,所以透视变换包括了所有的仿射变换

openCV中实现透视变换方法:

首先根据变换前后的四个点用cv.getPerspectiveTransform()生成3×3的变换矩阵

再用cv2.warpPerspective()进行透视变换

OpenCV实现透视变换的函数

函数cv2.warpPerspective()

格式:cv2.warpPerspective(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])

src: 输入图像

M:大小为3×3的转换矩阵

其他参数含义与cv2.warpAffine()函数中的一致

函数cv2.getPerspectiveTransform()

格式:M=cv2.getPerspectiveTransform(src,dst)

src:原图像中4个点的坐标

dst:原图像中4个点在转换后的目标图像中的对应坐标

代码示例

相关推荐
量子位21 分钟前
苹果炮轰推理模型全是假思考!4 个游戏戳破神话,o3/DeepSeek 高难度全崩溃
人工智能·deepseek
黑鹿02225 分钟前
机器学习基础(四) 决策树
人工智能·决策树·机器学习
Fxrain25 分钟前
[深度学习]搭建开发平台及Tensor基础
人工智能·深度学习
szxinmai主板定制专家28 分钟前
【飞腾AI加固服务器】全国产化飞腾+昇腾310+PCIe Switch的AI大模型服务器解决方案
运维·服务器·arm开发·人工智能·fpga开发
laocui132 分钟前
Σ∆ 数字滤波
人工智能·算法
蜉蝣之翼❉1 小时前
opencv如何在仿射变换后保留完整图像内容并自动裁剪
opencv·计算机视觉
Matrix_112 小时前
论文阅读:Matting by Generation
论文阅读·人工智能·计算摄影
一叶知秋秋2 小时前
python学习day39
人工智能·深度学习·学习
Ai多利2 小时前
深度学习登上Nature子刊!特征选择创新思路
人工智能·算法·计算机视觉·多模态·特征选择
几道之旅2 小时前
MCP(Model Context Protocol)与提示词撰写
人工智能