[英]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.