【问题标题】:How getPerspectiveTransform and warpPerspective work? [Python]getPerspectiveTransform 和 warpPerspective 如何工作? [Python]
【发布时间】:2020-08-25 16:35:17
【问题描述】:

对于getPerspectiveTransformwarpPerspective 如何在 OpenCV 中工作,特别是在 Python 中,我找不到完美的解释。我对这些方法的理解是:

给定来自源图像的 4 个点和 4 个新点 getPerspectiveTransform 返回一个 (3, 3) 矩阵,该矩阵在将图像作为参数发送到 warpPerspective 时会以某种方式裁剪图像。我认为 4 个点(来自 src 图像)在图像上形成一个多边形,然后将其删除/裁剪,然后将这个新裁剪的图像安装在新给定的 4 个点之间,我还看到warpPerspective 的输入大小为新图像。所以我推断这一点,如果新点的最大高度/最大宽度(从点计算......想象这些点是矩形或四边形的角)小于提供的宽度或高度,剩余区域是留下空白,基本上是黑色/白色,但情况并非如此......如果从新点计算的宽度/高度小于提供的宽度和高度,则剩余空间被源图像的某些部分填充本质上是4个源点的外部...

我无法理解这种行为......

那么我是不是对这些方法的解释有误?如果是,请提供对这些方法的正确解释。

PS。我对 OpenCV 还很陌生,如果有人解释 getPerspectiveTransform warpPerspective 使用的基础数学,那就太好了。

提前致谢。

【问题讨论】:

    标签: python computer-vision opencv-python opencv4


    【解决方案1】:

    这些函数是称为几何变换的图像处理概念的一部分。 在现实生活中拍照时,总会存在某种几何失真,可以使用几何变换来消除这种失真。它还有其他应用,包括构建马赛克、地理测绘、立体和视频。

    这是来自this site 的示例:

    所以基本上warpPerspective 将源图像转换为所需的版本,并使用getPerspectiveTransform 给出的 3*3 转换矩阵完成这项工作。

    查看更多详情here

    现在,如果您想知道如何从源图像和目标图像中找到这对 4 个点,您应该检查另一个称为特征提取的图像处理概念。这些方法可以完美地找到图像的重要区域,您可以将它们与从不同视图拍摄的同一对象的另一张图像进行匹配。 (检查 SIFT、SURF、ORB 等)

    匹配特征的示例:

    所以warpPerspective 不仅会裁剪您的图像,它还会根据变换矩阵传输整个图像(不仅仅是由 4 个点指定的区域),而这些点将仅用于查找正确的矩阵。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多