任意度数的 Numpy 矩阵旋转

Loi*_* L. 1 python numpy matrix

我试图找到一种方法在我的矩阵上应用任意度数的矩阵旋转,该矩阵包含三个波段,如 RGB,但值大于 (0-255)。

这是我的数据示例,其形状为 (100, 100, 3):

 [[ 847.5  877.   886.  ...  821.5  856.5  898. ]
 [ 850.   883.   969.5 ...  885.   878.5  947.5]
 [ 982.   968.5  927.5 ...  909.5  958.  1037. ]
 ...
 [ 912.   827.   893.  ... 1335.  1180.  1131. ]
 [ 954.   855.5  882.  ... 1252.  1266.  1335. ]
 [ 984.   916.   930.  ... 1080.5 1278.  1385.5]]
Run Code Online (Sandbox Code Playgroud)

我找到了一个函数,scipy.misc.imrotate(image_array, 20)但问题是这个函数将我的数据重新缩放到范围 (0-255),因此我丢失了原始矩阵的信息。是否有一个函数可以在不重新缩放数据的情况下完成与前一个相同的工作?

小智 9

你试过rotate函数scipy.ndimage.interpolation吗?

import numpy as np
from scipy.ndimage.interpolation import rotate

x = np.random.randint(800, 1000, size=[100, 100, 3])
rotated = rotate(x, angle=45)
Run Code Online (Sandbox Code Playgroud)

它确实旋转矩阵而不缩放值。

  • 谢谢,看来它达到了我想要的。为了保持与输入相同的形状,即 (100,100,3) 我只需要添加一个额外的参数,即 `rotate(x, angle=45, reshape=False)` (2认同)