[英]Unable to see the image from a .npy file
尝试下面的代码来读取图像,它是一个 .npy 文件,但是得到了下面的错误
import numpy as np
from matplotlib import pyplot as plt
import matplotlib
import glob
for filename in glob.glob("*.*"):
if '.npy' in filename:
img_array = np.load(filename, allow_pickle=True)
plt.imshow(img_array, cmap="gray")
img_name = filename+".png"
matplotlib.image.imsave(img_name, img_array)
print(filename)
Output
TypeError: Invalid shape (601, 660, 14) for image data
我最好的理解是,你想为每个数据集 plot 14(或其他......)图像,这可以按如下方式完成
norm = plt.Normalize(np.min(img_array), np.max(img_array))
for n, xy in enumerate(np.transpose(img_array, (2,1,0))):
plt.imshow(xy, cmap='gray', norm=norm)
fname = base+"%2.2d"%n+".png'
...
如果您想让每个图像独立于其他图像进行缩放,请省略所有norm
内容,如果您想交换图像中的列和行,请使用np.transpose(img_array, (2,0,1)))
import numpy as np
import matplotlib.pyplot as plt
X, Y, Z = 11, 13, 3
images = np.arange(X*Y*Z).reshape(Z,Y,X).transpose((1,2,0))
cm = 'gray'
norm = plt.Normalize(np.min(images), np.max(images))
normalize = 0
fig, axes = plt.subplots(2, 3, constrained_layout=True)
fig.suptitle('''\
Top: each image is indipendently normalized.
Bottom: all images are equally normalized.''')
for row in axes:
for ax, image in zip(row, images.transpose((2,0,1))):
if normalize:
im = ax.imshow(image, cmap=cm, norm=norm)
else:
im = ax.imshow(image, cmap=cm)
plt.colorbar(im, ax=ax)
if normalize:
plt.colorbar(im, ax=row, location='bottom')
normalize = 1
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.