將PIL 影像轉換為NumPy 陣列以實現高效的像素轉換
在處理影像處理任務時,通常需要轉換PIL ( Python成像庫)將影像轉換為NumPy 數組,以實現更快的像素級轉換。這種轉換可以有效地操作影像數據,從而實現更複雜和時間優化的影像操作。
要將PIL 影像轉換為NumPy 數組,可以使用以下程式碼片段:
pic = Image.open("foo.jpg") pix = numpy.array(pic.getdata()).reshape(pic.size[0], pic.size[1], 3)
此程式碼從PIL 影像中讀取影像數據,並將其重塑為3 維NumPy數組,其中每個維度代表影像的高度、寬度和通道(例如,RGB)。
要在執行所需的轉換後將NumPy 陣列轉換回PIL 影像,可以使用以下程式碼:
new_pic = Image.fromarray(modified_pix)
但是,此方法不允許使用修改後的NumPy 陣列直接修改原始PIL 影像。
在 PIL 版本 1.1.6 之前,修改原始 PIL 影像需要將 NumPy 陣列轉換為元組列表:
data = list(tuple(pixel) for pixel in modified_pix) pic.putdata(data)
但是,這種方法可能很慢且效率低下。
在PIL 版本1.1.6 及更高版本中,在PIL 影像和NumPy 陣列之間轉換的首選方法是:
pix = numpy.array(pic)
此指令產生一個以行、列和RGB 通道為維度的3 維NumPy 陣列。
執行像素轉換後,可以使用以下方法將更新的陣列轉換回PIL 影像:
new_pic = Image.fromarray(modified_pix)
或者,可以使用修改後的NumPy 陣列修改原始PIL 影像:
pic.putdata(modified_pix)
以上是如何有效率地將 PIL 影像轉換為 NumPy 陣列以進行像素轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!