为什么 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])
我会 post 图片,但我是 Whosebug 的新手,我还没有足够的声誉。
干杯,
Matlab 和 python 在内存中存储数组的方式不同。 Matlab保存数组列优先,而python使用行优先方法。
例如,考虑一个 2×2 矩阵
M = [1, 2
3, 4]
在内存中,matlab将矩阵保存为[1 3 2 4]
,而python的阶数为[1 2 3 4]
。此效果会导致您的图像被转置。
考虑在保存之前在 Matlab 中转置图像 - 这样数据在内存中的存储顺序与 python 中的顺序相同。
我有一个在 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])
我会 post 图片,但我是 Whosebug 的新手,我还没有足够的声誉。
干杯,
Matlab 和 python 在内存中存储数组的方式不同。 Matlab保存数组列优先,而python使用行优先方法。
例如,考虑一个 2×2 矩阵
M = [1, 2
3, 4]
在内存中,matlab将矩阵保存为[1 3 2 4]
,而python的阶数为[1 2 3 4]
。此效果会导致您的图像被转置。
考虑在保存之前在 Matlab 中转置图像 - 这样数据在内存中的存储顺序与 python 中的顺序相同。