[英]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.