我有一个形状为 (7,4,100,100) 的 numpy 数组,这意味着我有 7 张 100x100 的图像,深度为 4。我想将这些图像旋转 90 度。我努力了:
rotated= numpy.rot90(array, 1)
但它将数组的形状更改为 (4,7,100,100),这是不需要的。有什么解决办法吗?
原文由 FJ_Abbasi 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用 scipy.ndimage.rotate
,我认为它比 numpy.rot90
更有用
例如,
from scipy.ndimage import rotate
from scipy.misc import imread, imshow
img = imread('raven.jpg')
rotate_img = rotate(img, 90)
imshow(rotate_img)
如果你注意旋转后的图像,你会在左侧观察到黑色边框,这是因为 Scipy 使用插值。所以,实际上图像已经改变了。但是,如果这对您来说是个问题,有许多选项可以去除黑色边框。
看到这篇 文章。
原文由 mforezdev 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
2 回答899 阅读✓ 已解决
一种不使用
np.rot90
顺时针旋转的解决方案是交换最后两个轴,然后翻转最后一个 -对于逆时针旋转,翻转倒数第二个轴 -
使用
np.rot90
,逆时针旋转将是 -样品运行 -
运行时测试
因此,对于旋转
90
度或它的倍数,numpy.dot
或swapping axes
更重要的是,在基于 dos 的性能方面似乎也表现不佳否则会改变值的插值,就像 Scipy 的基于旋转的函数所做的那样。