繁体   English   中英

如何从堆叠的 RGB 中以光栅形式写入 PNG?

[英]How to write PNG in rasterio from a stacked RGB?

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

但我得到这个错误:

ValueError: Source shape (1, 830, 793, 3) is inconsistent 
with given indexes 1

这里有两个问题:

  1. Rasterio 是频道在前,而您的频道在后。 换句话说, rgb的形状应该是 (3, 830, 793) 而不是 (830, 793, 3)。
  2. 您设置count=1并执行dst.write(rgb, 1) 这使它尝试将 rgb 写入输出文件的第一个波段。 相反,您需要count=3dst.write(rgb)

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

根据亚瑟的回答和原始代码,这是这个问题的一个解决方案,最后一行应该是:

        dst.write(np.rollaxis(rgb, 2,0))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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