Python can';不能正确地将数组转换为图像
我想从文件中读取一个图像,将其调整为方形尺寸(resize),然后将数组转换为图像以显示它。所以我为它写了下面的代码,但不幸的是fromarray方法最后并没有显示真实的图像..我如何修复它?(我不想使用opencv或其他内置函数) Numpy的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()
并不像您想象的那样。它不会沿阵列的轴对阵列重新采样
假设您的源阵列如下所示:
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样式的数组)彼此保持连续顺序
你真正想要的是枕头:
选择任何适合您的用例的重采样方法