Python-OpenCV-图像通过透视变换矫正

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

由于相机制造精度以及组装工艺的偏差引入的畸变,或者由于照片拍摄时的角度、旋转、缩放等问题, 可能会导致原始图像的失真,如果要修复这些失真,我们可以通过透视变换,对图像进行畸变矫正

透视变换(Perspective Transformation):是将图片投影到一个新的视平面(Viewing Plane), 也称作投影映射(Projective Mapping)。
透视变换的目的:就是把现实中为直线的物体, 在图片上可能呈现为斜线, 通过透视变换转换成直线的变换

 


提示:以下是本篇

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV是一个优秀的计算机视觉库,为Python提供了强大的图像处理和计算机视觉功能。透视变换是一种将图像从一种视角投影到另一种视角的一种方法。在计算机视觉中,透视变换通常被用于图像矫正图像尺度变化、频谱分析等方面。这篇文章将对OpenCV透视变换Python中的详细应用进行介绍。 首先,需要明确OpenCV透视变换的原理。透视变换实际上是一种基于同名点的变换方法,即在两个不同视角下拍摄同一个图像或场景,然后将这两个图像通过相应的变换进行对齐。它的基本原理是:通过计算两个视角之间的变换矩阵,把一个图像在另一个视角的位置上显示出来。 要进行透视变换,需要用到OpenCV库中的cv2.warpPerspective()函数。该函数有四个输入参数:源图像变换矩阵、输出图像尺寸和插值方法。其中变换矩阵是一个 3x3 的矩阵,插值方法可选,默认是双线性插值。 在进行透视变换时,需要先进行角点检测,即使用函数cv2.findContours()和cv2.approxPolyDP()函数找到图像中几何形状最相似的四个点,并将这些点进行透视变换矩阵的计算。这一过程可以简化为如下几步: 1、读取源图像,初步处理 2、寻找感兴趣区域,也就是四个角点 3、用透视变换矩阵进行变换 4、输出处理后的图像 代码如下所示: import cv2 import numpy as np img = cv2.imread('test.jpg') #读入源图像 height, width = img.shape[:2] #取得源图像的长和宽信息 pts1 = np.float32([[54,70],[373,70],[28,409],[407,409]]) #设置一个包含4个角点的数组 pts2 = np.float32([[0,0],[width,0],[0,height],[width,height]]) #经过透视变换后需要变形到的位置 M = cv2.getPerspectiveTransform(pts1,pts2) #计算透视变换矩阵 dst = cv2.warpPerspective(img,M,(width,height)) #进行透视变换 cv2.imshow('src', img) #原图 cv2.imshow('dst', dst) #透视变换后的图 cv2.waitKey(0) cv2.destroyAllWindows() 通过上述代码片段,我们可以实现对一张图像进行简单的透视变换,类似的方法也可以应用于其他场景,如校正石墨纸或白板上的图形或文字。总的来说,在OpenCV的支持下进行透视变换实现起来非常简单,而且可以应用于多种场景中,对于需要对图像进行精确变换的计算机视觉应用,是不可或缺的基本操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值