如何在 OpenCV Python 中执行矩阵变换?


cv2.transform() 函数执行输入数组中每个元素的矩阵变换。由于图像在 OpenCV 中是 NumPy 多维数组,因此我们可以直接对图像应用此变换。要使用此函数,我们首先应该定义一个变换矩阵 m。输出中的通道数将与变换矩阵 m 中的行数相同。

步骤

要找到输入图像的矩阵变换,您可以按照以下步骤操作:

  • 导入所需的库 OpenCVNumPy。确保您已安装它们。

  • 使用 cv2.imread() 方法读取输入图像。指定图像的完整路径。

  • 定义大小为 (3,3) 的变换矩阵 m。您可以生成变换矩阵作为随机数或定义自定义矩阵。

  • 使用 cv2.transform() 查找图像的矩阵变换。将变换矩阵 m 作为参数传递给 cv2.transform() 函数。

  • 显示变换后的图像。

让我们看看下面的示例,以对输入图像执行矩阵变换。

输入图像

在下面的示例中,我们将使用以下图像作为输入文件。


示例

在此示例中,我们找到输入图像的矩阵变换。我们将变换矩阵定义为一个 3×3 的随机数矩阵。

# import required libraries import cv2 import numpy as np # read input image img = cv2.imread('leaf1.jpg') # define transformation matrix m = np.random.randn(3,3) # apply the cv2.transform to perform matrix transformation img_tr = cv2.transform(img, m, None) # display the transformed image cv2.imshow("Transformed Image", img_tr) cv2.waitKey(0) cv2.destroyAllWindows()

输出

执行上述代码后,它将生成以下输出窗口:


注意 - 由于变换矩阵是使用随机数生成的,因此您可能会得到颜色和亮度不同的输出图像。

示例

在此示例中,我们找到输入图像的矩阵变换。我们将变换矩阵定义为一个 3×3 的全 1 矩阵。

# import required libraries import cv2 import numpy as np # read input image img = cv2.imread('leaf1.jpg') # define transformation matrix m = np.ones((3,3)) # apply the cv2.transform to perform matrix transformation img_tr = cv2.transform(img, m, None) # display the transformed image cv2.imshow("Transformed Image", img_tr) cv2.waitKey(0) cv2.destroyAllWindows()

输出

执行上述代码后,它将生成以下输出窗口:


更新于: 2022-12-05

5K+ 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告