繁体   English   中英

为什么 matplotlib imshow() 显示转置图像?

[英]Why does matplotlib imshow() display a transposed image?

我有一个在 matlab 中创建的图像矩阵,我将使用它作为我在 theano 中编码的卷积神经网络的输入。 我已经使用numpy.loadtxt导入了矩阵,在检查时,矩阵看起来与在 matlab 中创建的矩阵相同。 在 matlab 中使用imshow()时,我得到正确显示的图像,但是,当使用 matplotlib imshow()时,图像被转置。 有谁知道这是什么原因?

matlab 的代码:

    img = dlmread('kthImagesCheck.txt');
    imshow(reshape(img(:,1), [104,104]))

matplotlib 的代码:

    img = numpy.loadtxt("kthImagesCheck", delimiter = ",")
    imshow(reshape(img[:,0],[104,104])

我会发布图片,但我是 stackoverflow 的新手,而且我还没有足够的声誉。

干杯,

Matlab和python有另一种将数组存储在内存中的方式。 Matlab首先将数组保存为列,而python使用行优先的方法。
考虑一个2×2矩阵

M = [1, 2
     3, 4]

在内存中,matlab将矩阵另存为[1 3 2 4]而python的顺序为[1 2 3 4] 此效果会使您的图像转位。

在保存图像之前,请考虑在Matlab中转置图像-这样,数据以与python中相同的顺序存储在内存中。

您可以使用二维数组表示法指定 numpy 数组的形状,例如

1D_array = np.array(list)[:, None] 

对于垂直或

1D_array = np.array(list)[None, :]

为水平。 或者你可以使用 np.transpose()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM