1 回答

TA貢獻1836條經驗 獲得超13個贊
首先,如果您只想保存圖像,請避免使用plt.savefig
,而是使用其中之一plt.imsave
(或來自其他庫的替代方案,例如opencv'simwrite
或來自 的工具PIL
等)。這樣做的原因是plt.savefig
實現保存整個圖形,這意味著保存軸、標簽、文本等。此外,它需要一個布爾參數來Transparent
處理第四個通道。因此,在不知道 的內部工作原理和確切實現的情況下plt.savefig
,可以肯定地說它不應該用于保存灰度圖像。
但是,在您的情況下,由于您沒有使用plt.savefig
圖像本身以外的任何東西來繪制任何東西,因此在涵蓋您的問題中的兩點之后,我將采用一個簡單的解決方法。首先,你的代碼是
plt.imshow(data[:, 400:650].T)
但是因為你想要一個灰度圖像,你應該設置cmap="gray"
. 二、關于這部分
僅以 png 格式存儲單通道圖像時,圖像全黑
您的問題中沒有關于您的值范圍的任何信息data
,但我猜這只是“float”與“uint8”數據類型的問題。嘗試設置data.astype(float64)
,或者如果使用uint8
,請確保將其標準化[0,255]
而不是[0,1]
。
現在關于簡單的解決方法,一旦您弄清楚如何更正上述內容并保存您的圖形,您會注意到在加載圖像時所有plt.imread
四個通道都具有相同的值(假設您已經設置cmap=gray
),所以你可以只選擇四個通道中的任何一個并丟棄其他通道。
但同樣,使用plt.imsave
or opencv 是一個更好的主意。
添加回答
舉報