繁体   English   中英

无法从 a.npy 文件中看到图像

[英]Unable to see the image from a .npy file

尝试下面的代码来读取图像,它是一个 .npy 文件,但是得到了下面的错误

输入这是下载文件大小> 10GB的图像的链接

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM