Python 2.7 这个倍频程代码的等效python代码是什么

Python 2.7 这个倍频程代码的等效python代码是什么,python-2.7,octave,Python 2.7,Octave,我读了一幅图像,将其大小调整为20*20,然后将其转换为矩阵,然后找到灰度。所有这些我也可以用Python来做……但我不能做第五行代码……如果我尝试, 重塑(I,1400)…图像看起来是旋转的…我不知道如何在python中写出上面的5行 问题 在链接和代码中有一个displayData函数。我将使用python获得的矩阵保存为mat,并在调用矩阵上的displayData()时将其加载到倍频程中。这包括在链接中。倍频程中没有这样的问题。感谢您对此进行研究。为您重塑可以使用的数组,按照您的代码,您

我读了一幅图像,将其大小调整为20*20,然后将其转换为矩阵,然后找到灰度。所有这些我也可以用Python来做……但我不能做第五行代码……如果我尝试, 重塑(I,1400)…图像看起来是旋转的…我不知道如何在python中写出上面的5行

问题
在链接和代码中有一个displayData函数。我将使用python获得的矩阵保存为mat,并在调用矩阵上的displayData()时将其加载到倍频程中。这包括在链接中。倍频程中没有这样的问题。感谢您对此进行研究。

为您重塑可以使用的数组,按照您的代码,您可以使用。在您的例子中,您正在将I的大小从(20,20)更改为(1400)。 使用用于处理图像的API将生成的重塑阵列保存到mat文件的完整示例如下:

import numpy as np
import cv2
import scipy.io

I = cv2.imread('one.jpg')
I = cv2.resize(I,(20,20))
I = cv2.normalize(I.astype('float'), None, 0.0, 1.0, cv2.NORM_MINMAX)
I = np.mean(I, axis=2)
a = np.reshape(I, (1,400), order='F')
scipy.io.savemat('a.mat', mdict={'a': a})
请注意
重塑
的第二个参数,它是一个包含数组新大小的元组。另外,请注意第三个参数
order
,该参数允许以列主样式(Fortran)重新排列元素,这是倍频程使用的惯例(请参见在倍频程中重塑)。与从倍频程得到的图像相比,这会产生一个正确的、不旋转的图像


然而,考虑到您希望从2d数组获得1d数组的事实,如果您希望获得I的视图(如果可能),您可以从numpy使用,即
a
的修改也会改变
I
;或者,它返回
I
的副本,因此修改
a
不会更改
I
。但是,请注意,
ravel
flatten
都返回一个1d数组,其大小为(400,)。应使用相同的
order
参数。

当您请求代码方面的帮助时,请提供您目前获得的工作代码。我根据您在更新问题时澄清的具体问题更新了答案。但是,请阅读下面的内容,为现在和将来写一个更好的问题和一个可验证的代码。总之,您应该提供一个小的可验证代码,而不是将链接附加到整个项目,因为人们应该能够轻松地测试出现错误的代码,而不是浪费时间试图理解项目。对此我很抱歉。我是新手,下次将尽我最大的努力。没问题,重要的是您学到了;)我已经添加了代码和文件的链接。谢谢。
import numpy as np
import cv2
import scipy.io

I = cv2.imread('one.jpg')
I = cv2.resize(I,(20,20))
I = cv2.normalize(I.astype('float'), None, 0.0, 1.0, cv2.NORM_MINMAX)
I = np.mean(I, axis=2)
a = np.reshape(I, (1,400), order='F')
scipy.io.savemat('a.mat', mdict={'a': a})