我有 3 个变量,即 R、G、B。我想使用 rasterio 基于这三个变量制作一个 PNG 图像。我尝试使用 np.dstack 堆叠 3 个图像并使用结果来写入它。
使用 rasterio,我尝试这样写:
rgb = np.dstack((Nr,Ng,Nb))
finame = "Image_RGB.png"
with rasterio.Env():
with rasterio.open(finame, 'w',
driver='PNG',
height=rgb.shape[0],
width=rgb.shape[1],
count=1,
dtype=rgb.dtype,
nodata=0,
compress='deflate') as dst:
dst.write(rgb, 1)
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
ValueError: Source shape (1, 830, 793, 3) is inconsistent
with given indexes 1
Run Code Online (Sandbox Code Playgroud)
这里有两件事出了问题:
rgb应该是 (3, 830, 793) 而不是 (830, 793, 3)。count=1并执行dst.write(rgb, 1)。这使得它尝试将 rgb 写入输出文件的第一个波段。相反,您想要count=3和dst.write(rgb)。这对你来说有点晚了,但也许我的回答仍然会对其他人有所帮助。