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