簡體   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