改变 matplotlib 图像的维度

Changing dimensionality for matplotlib image

我正在使用 scipy.misc.imread 加载图像,对于我的 keras 模型,我必须将形状从 (3, 224, 224) 更改为 (224, 224, 3)。我一直在使用 numpy.reshape 来完成这个,但我不确定它是否真的有效。

所以我尝试绘制生成的图像,但 matplotlib.pyplot.imshow 不适用于新形状。

有什么方法可以绘制生成的图像吗?

整形很危险,因为它会混合图像的通道。

相反,您需要将第一个轴向后滚动,而其他两个保持原样。假设im是你的shape (3, 224, 224)的图像,那么滚动可以通过numpy.rollaxis

来完成
new_im = numpy.rollaxis(im,0, start=3) 

这样 new_im.shape 就是 (224, 224, 3)。该数组应该可以使用 matplotlib.pyplot.imshow()

绘制

假设您的图像是 im。使用以下代码:

im = im.transpose((1, 2, 0))
matplotlib.pyplot.imshow(im)