赞
踩
代码地址:https://gitee.com/norep/learn-opencv
cv2.warpAffine 是 OpenCV 库中的一个函数,用于根据一个仿射变换矩阵对图像进行变换。这个函数可以用来旋转、缩放、平移或剪切图像。它使用仿射变换,这意味着图像中的直线在变换后仍然是直线,但角度可能会改变。
dst = cv2.warpAffine(src, M, dsize, dst=None, flags=None, borderMode=None, borderValue=None)
参数说明:
src:一个 NumPy 数组,表示要进行仿射变换的源图像。
M:一个二维 NumPy 数组或一个 NumPy 数组的元组,表示仿射变换矩阵。这个矩阵应该有 2x3 或 3x3 的形状,其中 2x3 矩阵表示二维变换,3x3 矩阵表示三维变换。
dsize:一个元组 (width, height),表示目标图像的新尺寸。如果只提供了一个值,另一个值将被自动计算以保持图像的宽高比。
dst:一个可选的 NumPy 数组,用于存储变换后的图像。如果提供了这个参数,函数将返回 dst 而不是创建一个新数组。
flags:一个可选的整数,用于指定插值方法。常见的插值方法包括 cv2.INTER_LINEAR、cv2.INTER_CUBIC 等。
borderMode:一个可选的整数,用于指定边界模式。常见的边界模式包括 cv2.BORDER_CONSTANT、cv2.BORDER_REPLICATE 等。
borderValue:一个可选的元组 (b, g, r),用于指定边界值。这个值将在图像的边界像素上应用。
二维平移矩阵
三维平移矩阵
M = np.float32([[1, 0, 30], [0, 1, 30]])
new_pic1 = cv2.warpAffine(pic1, M, (pic1_w, pic1_h))
OpenCV中提供了对应的API自动创建旋转矩阵
M = cv2.getRotationMatrix2D(center, angle, scale)
# M = cv2.getRotationMatrix2D((100, 100), 45, 1)
参数说明:
center:一个元组 (x, y),表示图像绕其旋转的中心点坐标。
angle:一个浮点数,表示旋转的角度,以度为单位。
scale:一个可选的浮点数,表示旋转时的缩放因子。如果设置为 1,则表示没有缩放;如果大于 1,则表示放大;如果小于 1,则表示缩小。
返回值:
注意:cv2.getRotationMatrix2D 函数返回的矩阵 M 是一个 2x3 的数组,表示图像的二维仿射变换。
M = cv2.getRotationMatrix2D((100, 100), 45, 1)
new_pic1 = cv2.warpAffine(pic1, M, (pic1_w, pic1_h))
cv2.getAffineTransform 是 OpenCV 库中的一个函数,用于计算一个图像从一个坐标系变换到另一个坐标系的仿射变换矩阵
这个函数在图像处理中非常有用,特别是在需要对图像进行仿射变换(如旋转、缩放和平移)时。
M = cv2.getAffineTransform(srcPoints, dstPoints)
参数说明:
srcPoints:一个 NumPy 数组或一个包含三个点(坐标元组)的列表,表示源坐标系中的点。这些点将被映射到目标坐标系中的对应点。
dstPoints:一个 NumPy 数组或一个包含三个点(坐标元组)的列表,表示目标坐标系中的点。这些点是源坐标系中相应点的映射。
返回值:
src = np.float32([[50, 50], [150, 50], [50, 150]])
dst = np.float32([[50, 150], [50, 50], [150, 150]])
M = cv2.getAffineTransform(src, dst)
透视变换是一种投影变换,它可以将一个平面上的点映射到另一个平面上,通常用于图像的校正、变换和机器人视觉等领域。
M = cv2.getAffineTransform(srcPoints, dstPoints)
参数说明:
srcPoints:一个 NumPy 数组或一个包含四个点(坐标元组)的列表,表示源坐标系中的点。这些点将被映射到目标坐标系中的对应点。
dstPoints:一个 NumPy 数组或一个包含四个点(坐标元组)的列表,表示目标坐标系中的点。这些点是源坐标系中相应点的映射。
返回值:
src = np.float32([[40, 40], [140, 50], [30, 160], [150, 150]])
dst = np.float32([[0, 0], [150, 0], [0, 150], [150, 150]])
M = cv2.getPerspectiveTransform(src, dst)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。