《OpenCV计算机视觉》—— 用于执行图像透视变换的两个关键函数

文章目录

cv2.getPerspectiveTransformcv2.warpPerspective 是 OpenCV 库中用于执行透视变换的两个关键函数。下面是对这两个函数的详细解释:

cv2.getPerspectiveTransform

功能:计算从源图像到目标图像的透视变换矩阵。

参数

  • src:源图像中的四个点的坐标,通常是一个形状为 (4, 2) 的 NumPy 数组,其中每行代表一个点的 (x, y) 坐标。
  • dst:目标图像中的四个对应点的坐标,格式与 src 相同。

返回值 :返回一个形状为 (3, 3) 的透视变换矩阵 M

使用

python 复制代码
import cv2
import numpy as np

# 源图像中的四个点(通常选择图像的四个角)
src_points = np.array([[x1, y1], [x2, y2], [x3, y3], [x4, y4]], dtype="float32")

# 目标图像中的四个对应点(定义变换后的图像形状)
dst_points = np.array([[X1, Y1], [X2, Y2], [X3, Y3], [X4, Y4]], dtype="float32")

# 计算透视变换矩阵
M = cv2.getPerspectiveTransform(src_points, dst_points)

cv2.warpPerspective

功能:应用透视变换矩阵将源图像变换到目标图像。

参数

  • src:源图像。
  • M:由 cv2.getPerspectiveTransform 计算得到的透视变换矩阵。
  • dsize:输出图像的尺寸 (width, height)

可选参数

  • flagsborderMode:用于指定插值方法和边界像素的外推方法,但通常使用默认值即可。
  • borderValue:边界颜色值,当 borderMode 不为 cv2.BORDER_CONSTANT 时可以忽略。

返回值:返回变换后的图像。

使用

python 复制代码
# 输出图像的尺寸
dsize = (width, height)

# 应用透视变换
warped_image = cv2.warpPerspective(src, M, dsize)

注意事项

  1. 在选择源图像和目标图像中的四个点时,请确保它们是图像中的显著特征点,并且它们在源图像和目标图像中的相对位置保持一致。
  2. 透视变换可能会改变图像的宽高比和形状,因此需要根据实际需求调整输出图像的尺寸。
  3. 透视变换是一种非线性变换,可能会引入一些失真或扭曲效果。如果希望保持图像的某些特征不变(如直线保持直线),可能需要考虑其他类型的变换(如仿射变换)。

通过结合使用 cv2.getPerspectiveTransformcv2.warpPerspective,可以实现图像的透视校正、形状变换等效果,在图像处理和计算机视觉领域具有广泛的应用。

相关推荐
阿里云大数据AI技术10 分钟前
【NeurIPS2025】阿里云PAI团队动态数据调度方案Skrull 入选
人工智能
硬汉嵌入式11 分钟前
VisualGDB 6.1 Beta5版本,正式引入全新的高速AI编辑引擎,专为C/C++项目量身打造
人工智能·visualgdb
乾元23 分钟前
AI 驱动的入侵检测与异常会话判别:从规则到行为分析前言:从“捕获敌人”到“守卫秩序”
运维·网络·人工智能·网络协议·安全
春日见25 分钟前
眼在手上外参标定保姆级教学(vscode + opencv)
linux·运维·服务器·数码相机·opencv·ubuntu·3d
泰迪智能科技011 小时前
分享|深化产教融合丨图书联合编写招募直播
人工智能
沐雪架构师1 小时前
OpenAgents:让AI智能体Agent像人类一样联网协作
人工智能
我要充满正能量1 小时前
拥抱AI Coding,让我更自信能胜任我的工作
人工智能·ai编程·claude
安达发公司1 小时前
安达发|效率革命:APS自动排程,为“金属丛林”安装精准导航
大数据·运维·人工智能·aps高级排程·aps排程软件·安达发aps·aps自动排程
神州问学1 小时前
AI 智能体攻陷软件工程:从 SWE-Agent 到 SWE-Swiss,全景解析 AI4SE 最新战局
人工智能
森诺Alyson1 小时前
前沿技术借鉴研讨-2025.12.23(荟萃分析/信号提取/轻量级模型)
论文阅读·人工智能·经验分享·论文笔记·论文讨论