Python 程序旋转图像

2025年3月17日 | 阅读 3 分钟

在本教程中,我们将编写 Python 程序来解决图像(矩阵)的旋转问题。这是一个与矩阵相关的问题。让我们来理解问题陈述。

问题陈述

一个 nxn 的二维矩阵代表一个图像。我们需要将图像顺时针旋转 90 度。我们需要使用原地方式执行此操作,这意味着我们不需要另一个二维矩阵来进行旋转。旋转后,图像将如下所示。

示例 -

Python Program to Rotate an Image

示例 - 1

示例 - 2

示例 - 3

我们应该遵循以下约束 -

解决方案

我们将实现以下解决方案。

  • 首先,获取矩阵的行数和列数。
  • 迭代内循环和外循环并转置矩阵。
  • 反转转置后的矩阵。

让我们看以下代码。

示例 -

输出

The input matrix is: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
The matrix after rotation:  [[7, 4, 1], [8, 5, 2], [9, 6, 3]]

解释 -

在上面的代码中,我们创建了一个接收要旋转的矩阵的方法。我们迭代了外循环,它将迭代矩阵的每一行,外循环则迭代每一行的列。我们在内循环中改变了矩阵的行和列。如果我们打印转置后的矩阵,它将如下所示。

它将产生以下输出 -

[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

如果我们仔细观察转置后的矩阵,我们离得到期望的输出只有一步之遥。我们只需要反转每一行。因此,我们借助 enumerate() 函数反转了矩阵的每一行。

它将产生以下输出 -

0 [1, 4, 7]
1 [2, 5, 8]
2 [3, 6, 9]

在下一行,我们反转了行并返回了矩阵。

让我们来理解另一种解决方案。

解决方案 - 2

在此解决方案中,我们将

  • 上下交换行,例如有 n 行:交换第 1 行和第 n 行,第 2 行和第 (n-1) 行,依此类推。
  • 然后找到结果矩阵的转置。

让我们理解下面的例子。

示例 -

输出

The input matrix is: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[7, 8, 9], [4, 5, 6], [1, 2, 3]]
The matrix after rotation:  [[7, 4, 1], [8, 5, 2], [9, 6, 3]]

结论

在本教程中,我们解决了一个许多大公司都提出的有趣的 Python 矩阵问题。我们通过多个代码实现了解决方案并进行了解释。一旦您理解了解决方案的方法,就可以自己动手实践。