-1

我将 numpy 文件存储为“test.npy”,它是具有 VV 和 VH 偏振带的二维合成孔径雷达(SAR)图像数据。如何使用 matplotlib 绘制这个二维图像数组?

import numpy as np

img_array = np.load('test.npy')
from matplotlib import pyplot as plt

plt.imshow(img_array[1], cmap='gray')
plt.show()

但是这条线:

plt.imshow(img_array[0], cmap='gray')

仅绘制列表中的第一个波段。那么,我怎么可能绘制二维图像数组呢?

4

2 回答 2

0

问题是您的数组具有 (2, 512, 512) 形状,但 matplotlib 只能显示灰度、rgb 或 rgba 图像。此外,数组需要分别具有 (H,W)、(H,W,3) 或 (H,W,4) 的形式,如您在此处的文档中所见。因此,我建议您交换轴并将数组扩展为具有额外空通道的 (H,W,3) 形状:

import numpy as np
from matplotlib import pyplot as plt

img_array = np.load('test.npy')
c, h, w = img_array.shape
img = np.zeros((h, w, 3))  # create image of zeros with (height, width, channel)
img[:, :, :2] = img_array.swapaxes(0,2) # fill the first 2 channels
plt.imshow(img)
plt.show()
于 2021-08-16T14:10:39.280 回答
0
import numpy as np
from matplotlib import pyplot as plt

img2d = np.load('test.npy')
img3d = np.concatenate(( np.expand_dims(img2d[0],-1), np.expand_dims(img2d[1],-1),np.expand_dims((img2d[0]+img2d[1])/2, -1)), -1)


plt.imshow(img3d)
plt.show()
于 2021-08-17T07:19:24.880 回答