如何从堆叠的 RGB 中将 PNG 写入光栅?

Nik*_*kko 6 python rasterio

我有 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)

Art*_*hur 6

这里有两件事出了问题:

  1. Rasterio 首先是通道,而最后才是通道。换句话说, 的形状rgb应该是 (3, 830, 793) 而不是 (830, 793, 3)。
  2. 你设定count=1并执行dst.write(rgb, 1)。这使得它尝试将 rgb 写入输出文件的第一个波段。相反,您想要count=3dst.write(rgb)

这对你来说有点晚了,但也许我的回答仍然会对其他人有所帮助。