目录
什么是透视变换?
函数解析
cv2.getPerspectiveTransform()
dst = warpPerspective()
代码实现
什么是透视变换?
透视变换(Perspective Transformation)是指利用透视中心、像点、目标点三点共线的条件,按透视旋转定律使承影面(透视面)绕迹线(透视轴)旋转某一角度,破坏原有的投影光线束,仍能保持承影面上投影几何图形不变的变换。
透视变换(Perspective Transformation)是将图片投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping)。
函数解析
cv2.getPerspectiveTransform()
retval = cv2.getPerspectiveTransform(src, dst)
- src:输入图像的四个点的坐标,格式为 [[],[],[],[]]
- dst:输出图像的四个点的坐标,格式为 [[],[],[],[]]
函数的返回值是一个 3x3 的透视变换矩阵,该矩阵可以应用于源图像,以实现从源四边形到目标四边形的透视变换。这个矩阵可以通过 cv2.warpPerspective()
函数来应用到源图像上,实现透视变换。
dst = warpPerspective()
dst = warpPerspective(src, M, dsize[, flags[, borderMode[, borderValue]]])
-
src:这是源图像,即你希望应用透视变换的图像。通常,这是一个二维的 numpy 数组。
-
M:这是一个3x3的透视变换矩阵,它描述了如何对源图像进行变换。你可以使用 函数来获取这个矩阵。
cv2.getPerspectiveTransform()
-
dsize:这是一个元组,表示输出图像的大小。通常,它以 的形式指定。输出图像的大小可以与源图像大小不同,你可以选择将其调整为所需的尺寸。
(宽度, 高度)
-
flags:这是一个可选参数,用于指定插值方法。它可以采用以下值之一:
-
cv2.INTER_NEAREST
:最近邻插值。 -
cv2.INTER_LINEAR
:双线性插值(默认)。 -
cv2.INTER_CUBIC
:双三次插值。 -
cv2.INTER_LANCZOS4
:Lanczos插值。
-
-
borderMode:这是一个可选参数,用于指定处理边界像素的方式。它可以采用以下值之一:
-
cv2.BORDER_CONSTANT
:使用固定的边界值。 -
cv2.BORDER_REPLICATE
:复制边界像素的值。 -
cv2.BORDER_REFLECT
:反射边界像素。 -
cv2.BORDER_WRAP
:环绕边界像素。
-
-
borderValue:这是一个可选参数,用于指定在 模式下要使用的边界值。通常,它是一个标量值,例如 表示黑色。
cv2.BORDER_CONSTANT
(0, 0, 0)。
文章来源:https://www.toymoban.com/news/detail-753374.html
代码实现
可点击此链接查看详细代码实现文章来源地址https://www.toymoban.com/news/detail-753374.html
到了这里,关于【OpenCV】透视变换——cv2.getPerspectiveTransform()与cv2.warpPerspective()详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!