python opencv透视变换,opencv图像透视变换
注意:代码连接无效。
OpenCV提供了两种图像变换方式:仿射变换和透视变换,两者的区别很容易区分。
前者是把一个长方形的图片变成平行四边形。
后者是把画面变成梯形。
虽然两种变换各有其应用场景,但由于透视效果的原因,后者在实际的图像变换中应用更为广泛。本文将详细讲解OpenCV透视变换的透视变换原理,并展示实例。
简介
透视变换是将图像投影到一个新的观看平面,也称为投影映射。如图所示
功能原型
OpenCV提供了warpPerspective()函数来实现图片的透视变换,只需输入梯形的四个顶点的坐标和目标画布的四个角的坐标即可自动完成变换。核心代码只有两行:首先读取两个坐标数组,计算变换矩阵;然后根据变换矩阵对原始图像进行透视变换,并输出到目标画布上。
cv2 . getperspective transform(src,dst) retval
参数描述
Src:源图像中要测量的矩形的四点坐标
Sdt:目标图像中矩形的四点坐标
立正!
原图的四个坐标要跟目标图的四个坐标一一对应。如果都是顺时针,都是顺时针。如果都是Z型,那都是Z型。
返回从源图像中的矩形转换到目标图像中的矩形的矩阵,矩阵必须是有用的,所以导出下面的函数。
cv2.warpPerspective(src,M,dsize[,dst[,flags[,borderMode[,border value]]])dst
参数包括:
Src:输入图像
m:转换矩阵
Dsize:目标图像形状
标志:插值方法、插值方法INTER_LINEAR或INTER_NEAREST
BorderMode:边框补偿模式,border _ constant或border _ replicate
BorderValue:边距补偿大小,为常数值;默认值为0。
或者
cv2.perspectiveTransform(src,m[,dst]) dst
一个
参数解释
Src:输入2通道或3通道图像
m:转换矩阵
返回相同大小的图片。
1图片校正示例
当我们拍摄报纸、杂志、身份证、银行卡等长方形物体的照片时。由于相机角度和高度的影响,我们经常会拍出梯形的照片(如下图所示)。这样的照片不仅不够美观,而且给人物识别带来很大难度。要将梯形图片转换成标准矩形,需要进行透视变换。
原象
效果如下:
转换后的效果如下图所示,效果还是很满意的。
头像代替广告牌的例子
在实际应用中,我们不仅需要将梯形修正为矩形,有时还需要将矩形转换为梯形。warpPerspective()当然是称职的。我们再用一个例子来论证。
真实效果
示例代码:
参见:
https://github.com/ViatorSun/Demo/tree/master/OpenCV
Perspective.py是例1的代码,使用时需要将图片img_32984.jpg放在同一个路径中。
Perspective_advert.py是示例2的代码,advert.py和photo.png的图像是实验图像。
res.png的实施例2的效果图
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。