opencv-25 图像几何变换04- 透视 cv2.warpPerspective()

这篇具有很好参考价值的文章主要介绍了opencv-25 图像几何变换04- 透视 cv2.warpPerspective()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是透视?

透视是一种几何学概念,用于描述在三维空间中观察物体时,由于视角的不同而产生的变形效果。在现实世界中,当我们从不同的角度或位置观察物体时,它们会呈现出不同的形状和大小。这种现象被称为透视效果。

透视效果主要由以下几个因素造成:

远近关系:在视野范围内,离我们更远的物体看起来较小,而离我们更近的物体看起来较大。这是因为我们在观察时,远处的物体在视平面上的投影较小。

平行线收敛:在透视效果下,远离观察者的平行线在视觉上会似乎收敛到一个点,被称为消失点。这使得在远处的物体线条会看起来更加趋向于一点。

视角变化:观察物体的视角改变,物体的形状和大小也会发生变化。例如,当我们倾斜或移动头部时,看到的物体会有不同的形态。

透视效果在绘画、摄影、计算机图形学等领域都起着重要的作用。在绘画中,艺术家通常使用透视来创造真实感和深度感。在摄影中,摄影师可以利用透视来拍摄令人惊叹的远景和近景照片。在计算机图形学中,透视是渲染真实感图像的重要技术之一。

在图像处理中,透视变换是一种将图像投影到一个新的视角或平面的方法,以实现校正透视畸变、改变图像视角等目的。通过透视变换,可以将图像中的内容按照一定的规则进行调整,从而达到所需的效果。

opencv 透视的应用场景

OpenCV中透视变换的应用场景非常广泛,它可以在许多不同的领域和任务中发挥重要作用。以下是一些使用OpenCV透视变换的常见应用场景:

  1. 图像校正与纠正:
    透视变换可以用于校正图像中的透视畸变,例如摄像头拍摄的倾斜建筑物或文档图像。通过找到正确的透视变换矩阵,可以将图像变换为在平面上正常显示的形式。
  2. 图像拼接与全景图像:
    在全景图像拼接中,透视变换用于将多个图像对齐并拼接成一个更大的全景图像。通过透视变换,可以校正相机的视角,以便拼接后的图像具有连贯的视觉效果。
  3. 车道线检测与车道保持:
    在自动驾驶或驾驶辅助系统中,透视变换可用于检测车道线并保持车辆在车道中心行驶。通过将图像转换为鸟瞰视角,车道线在图像中将呈现为直线,便于车道线检测算法的实现。
  4. 物体检测与识别:
    在计算机视觉中,透视变换可以用于改变图像的视角,从而便于对物体进行检测和识别。例如,通过将图像转换为俯视视角,可以更容易地检测和跟踪行人或车辆。
  5. 视频稳定与追踪:
    在视频稳定和目标追踪中,透视变换可用于稳定视频或将目标区域转换到固定视角,以便进行更稳健的跟踪。
  6. 增强现实 (AR) 应用:
    在AR应用中,透视变换可以用于将虚拟对象与真实世界中的物体进行融合,从而实现更真实的增强现实体验。
  7. 文档扫描与识别:
    在文档扫描与识别应用中,透视变换可用于校正文档图像中的透视畸变,从而确保文本和图像的水平和垂直对齐。

这些只是OpenCV透视变换的一些常见应用场景,实际上,透视变换在计算机视觉和图像处理中有着广泛的应用,帮助我们解决各种复杂的视觉任务。

透视变换通过函数 cv2.warpPerspective()实现,该函数的语法是:

dst = cv2.warpPerspective( src, M, dsize[, flags[, borderMode[, borderValue]]] )

式中:
 dst 代表透视处理后的输出图像,该图像和原始图像具有相同的类型。dsize 决定输出图
像的实际大小。
 src 代表要透视的图像。
 M 代表一个 3×3 的变换矩阵。
 dsize 代表输出图像的尺寸大小。
 flags 代表插值方法,默认为 INTER_LINEAR。当该值为 WARP_INVERSE_MAP 时,

意味着 M 是逆变换类型,能实现从目标图像 dst 到原始图像 src 的逆变换。具体可选值
参见表 5-1。
 borderMode 代表边类型, 默认为 BORDER_CONSTANT 。 当 该值为 BORDER_
TRANSPARENT 时,意味着目标图像内的值不做改变,这些值对应原始图像内的异常值。

borderValue 代表边界值,默认是 0。
与仿射变换一样,同样可以使用一个函数来生成函数 cv2.warpPerspective()所使用的转换矩阵。

该函数是 cv2.getPerspectiveTransform(),其语法格式为:

retval = cv2.getPerspectiveTransform( src, dst )

式中:
 src 代表输入图像的四个顶点的坐标。
 dst 代表输出图像的四个顶点的坐标。

需要注意的是, src 参数和 dst 参数是包含四个点的数组,与仿射变换函数 cv2.getAffineTransform() 中的三个点是不同的。实际使用中,我们可以根据需要控制 src 中的四
个点映射到 dst 中的四个点。

实验:完成图像透视

import cv2
import numpy as np
img=cv2.imread('demo.bmp')
rows,cols=img.shape[:2]
print(rows,cols)
pts1 = np.float32([[150,50],[400,50],[60,450],[310,450]])
pts2 = np.float32([[50,50],[rows-50,50],[50,cols-50],[rows-50,cols-50]])
M=cv2.getPerspectiveTransform(pts1,pts2)
dst=cv2.warpPerspective(img,M,(cols,rows))
cv2.imshow("img",img)
cv2.imshow("dst",dst)
cv2.waitKey()
cv2.destroyAllWindows()

指定原始图像中平行四边形的四个顶点 pts1,指定目标图像中矩形的四个顶点
pts2,使用 M=cv2.getPerspectiveTransform(pts1,pts2)生成转换矩阵 M。接下来,使用语句
dst=cv2.warpPerspective(img,M,(cols,rows))完成从平行四边形到矩形的转换。

运行效果:

opencv-25 图像几何变换04- 透视 cv2.warpPerspective(),opencv,opencv,人工智能,计算机视觉

实验原图:

opencv-25 图像几何变换04- 透视 cv2.warpPerspective(),opencv,opencv,人工智能,计算机视觉文章来源地址https://www.toymoban.com/news/detail-609109.html

到了这里,关于opencv-25 图像几何变换04- 透视 cv2.warpPerspective()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • opencv-22 图像几何变换01-缩放-cv2.resize()(图像增强,图像变形,图像拼接)

    几何变换是计算机图形学中的一种图像处理技术,用于对图像进行空间上的变换,而不改变图像的内容。这些变换可以通过对图像中的像素位置进行调整来实现。 常见的几何变换包括: 平移(Translation) :将图像在水平和/或垂直方向上进行平移,即将图像的每个像素沿着指

    2024年02月15日
    浏览(45)
  • Opencv-C++笔记 (16) : 几何变换 (图像的翻转(镜像),平移,旋转,仿射,透视变换)

    图像旋转是指图像按照某个位置转动一定的角度的过程,旋转中图像仍保持着原始尺寸。图像旋转后图像水平对称轴、垂直对称轴及中心坐标原点都可能会发生变换,因此需要对图像旋转中的坐标进行相应转换。 假设有一个点:P(x,y),它在绕原点 O(0,0) 旋转 β 后,被转换成

    2024年02月14日
    浏览(71)
  • opencv warpPerspective透视变换实现原理与过程

    【版权声明】 本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。         cv2.warpPerspective函数是OpenCV库中用于执行透视变换的函数之一。它可以将图像从一个透视投影转换为另一个透视投影,实现图像的旋转、缩放、平移等操作。该操作可表示为:

    2024年04月09日
    浏览(53)
  • 初学opencv c++学习笔记(五)透视变换--warpPerspective()

    这篇博客将用简单的口吻谈一谈透视变换是啥以及如何操作~    但是这篇博客,只要你看了,我相信会有收获~~~~~~~ ~~~~~~~~~   ~~~~~~~~~ 目录 一、透视变换介绍 1.基础介绍: 二、透视变换apl介绍---- warpPerspective() 1.官方定义 2.参数解释 三、搭配apl介绍---- getPerspectiveTransform()

    2024年01月21日
    浏览(48)
  • opencv图像仿射变换,cv2.warpAffine

    目录 仿射变换原理介绍 cv2.warpAffine函数介绍 代码实例          仿射变换 ,又称 仿射映射 ,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。         在有限维的情况,每个仿射变换可以由一个矩阵A和一个向量b给出,它可以写

    2024年02月05日
    浏览(69)
  • OpenCV-Python学习(21)—— OpenCV 图像几何变换之图像翻转(cv.flip、np.flip)

    1. 学习目标 学习 OpenCV 图像的翻转函数 cv.flip; 学习 NumPy 矩阵的反转函数 np.flip; 自己实现矩阵反转的函数。 2. OpenCV 翻转 翻转也称镜像,是指将图像沿轴线进行轴对称变换。水平镜像是将图像沿垂直中轴线进行左右翻转,垂直镜像是将图像沿水平中轴线进行上下翻转,水平

    2024年02月06日
    浏览(64)
  • OpenCV-Python学习(20)—— OpenCV 图像几何变换之图像旋转(cv.warpAffine、cv.getRotationMatrix2D、cv.rotate、np.rot90)

    1. 学习目标 学习旋转矩阵; 学习使用 OpenCV 的 cv.warpAffine 函数进行图片的旋转; 学习使用 OpenCV 的 cv.getRotationMatrix2D 来计算不同旋转中心的不同角度的 MAR 旋转变换矩阵; 学习使用 OpenCV 的 cv.rotate 进行特殊角度的旋转(90,180,270 度)。 2. 不同中心的旋转矩阵计算 2.1 图像

    2024年02月09日
    浏览(42)
  • 我在Vscode学OpenCV 几何变换(缩放、翻转、仿射变换、透视、重映射)

    几何变换指的是将一幅图像映射到另一幅图像内的操作。 cv2.warpAffine :使用仿射变换矩阵对图像进行变换,可以实现平移、缩放和旋转等操作。 cv2.warpPerspective :使用透视变换矩阵对图像进行透视变换,可以实现镜头校正、图像纠偏等操作。 cv2.getAffineTransform :计算仿射变换

    2024年02月05日
    浏览(66)
  • open cv学习 (四)图像的几何变换

    demo1 demo2 demo3 demo4 demo5 demo6 demo7

    2024年02月12日
    浏览(38)
  • 【opencv】:图像的透视变换

    仿射变换(Affine Transformation或 Affine Map) , 又称为仿射映射, 是指在几何中, 图像进行从一个向量空间进行一次线性变换和一次平移, 变换为到另一个向量空间的过程。我们常说的仿射变换是透视变换的一个特例。 以上便是透视变换的原理图,即将源图像通过投影映射,

    2024年02月15日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包