Python can';不能正确地将数组转换为图像

Python can';不能正确地将数组转换为图像,python,numpy,matplotlib,python-imaging-library,cv2,Python,Numpy,Matplotlib,Python Imaging Library,Cv2,我想从文件中读取一个图像,将其调整为方形尺寸(resize),然后将数组转换为图像以显示它。所以我为它写了下面的代码,但不幸的是fromarray方法最后并没有显示真实的图像..我如何修复它?(我不想使用opencv或其他内置函数) Numpy的resize()并不像您想象的那样。它不会沿阵列的轴对阵列重新采样 假设您的源阵列如下所示: array([ [11, 12, 13, 14, 15], [21, 22, 23, 24, 25] ]) arr

我想从文件中读取一个图像,将其调整为方形尺寸(resize),然后将数组转换为图像以显示它。所以我为它写了下面的代码,但不幸的是fromarray方法最后并没有显示真实的图像..我如何修复它?(我不想使用opencv或其他内置函数)

Numpy的
resize()
并不像您想象的那样。它不会沿阵列的轴对阵列重新采样

假设您的源阵列如下所示:

array([
        [11, 12, 13, 14, 15],
        [21, 22, 23, 24, 25]
      ])
array([
        [11, 12, 13],
        [14, 15, 21],
        [22, 23, 24]
      ])
然后在
a=np.resize(a,(3,3))
之后,结果如下所示:

array([
        [11, 12, 13, 14, 15],
        [21, 22, 23, 24, 25]
      ])
array([
        [11, 12, 13],
        [14, 15, 21],
        [22, 23, 24]
      ])
如您所见,原始的第一行运行到第二行,依此类推,而最后一个像素只是消失了。这是因为
np.resize()
实际上不会更改任何数据。它只是为内存中存在的数据指定了一个不同的形状,而原始行(或列,如果使用Fortran样式的数组)彼此保持连续顺序

你真正想要的是枕头:

选择任何适合您的用例的重采样方法。

Numpy的
resize()
不会做您认为它会做的事情。它不会沿阵列的轴对阵列重新采样

假设您的源阵列如下所示:

array([
        [11, 12, 13, 14, 15],
        [21, 22, 23, 24, 25]
      ])
array([
        [11, 12, 13],
        [14, 15, 21],
        [22, 23, 24]
      ])
然后在
a=np.resize(a,(3,3))
之后,结果如下所示:

array([
        [11, 12, 13, 14, 15],
        [21, 22, 23, 24, 25]
      ])
array([
        [11, 12, 13],
        [14, 15, 21],
        [22, 23, 24]
      ])
如您所见,原始的第一行运行到第二行,依此类推,而最后一个像素只是消失了。这是因为
np.resize()
实际上不会更改任何数据。它只是为内存中存在的数据指定了一个不同的形状,而原始行(或列,如果使用Fortran样式的数组)彼此保持连续顺序

你真正想要的是枕头:

选择任何适合您的用例的重采样方法