[英]Display image with a zoom = 1 with Matplotlib imshow() (how to?)
[英]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.