簡體   English   中英

將 PIL 圖像轉換為 numpy 數組時保留 3 維

[英]Preserve 3-dimensionality when converting PIL image to numpy array

我有一個 PIL 圖像列表:p0、p1、...、p85999(總共 86000 個)。 它們都是 RGB,大小為 30x30px。

我需要將它們轉換為標准化的 numpy arrays,我做了以下操作:

[np.asarray(r).astype('float32') / 255.0) for r in images]

其中r是 PIL 圖像。

這給出了一個 numpy arrays 的數組。

但是,這些 arrays 有時形狀為(30,30,3) ,有時形狀為(30,30)

我希望它們始終保持形狀(30,30,3)

我猜 numpy 這樣做是出於性能原因(當不需要 RGB 時,例如白色圖像?)。

無論如何,如何獲得所需的結果 - 讓所有 numpy arrays 的大小為(30,30,3)

另外,理想情況下,我希望我的最終 numpy 數組的大小為(30, 30, 3, 86000) 是否有直接從 PIL 圖像創建這樣一個數組的快捷方式?

我猜 numpy 這樣做是出於性能原因

Numpy 與它無關,這是您的 PIL Image 只有一個通道。 最簡單的解決方案是convert所有內容都轉換為 RGB:

ims = [np.asarray(r.convert('RGB')).astype('float32') / 255.0) for r in images]

如果然后調用np.asarray(ims) ,您將獲得一個形狀為[N,30,30,3]的數組,其中 N 是圖像的數量,然后您可以將其transpose為所需的順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM