Heim >Backend-Entwicklung >Python-Tutorial >Wie konvertiert man PIL-Bilder effizient in NumPy-Arrays und zurück?

Wie konvertiert man PIL-Bilder effizient in NumPy-Arrays und zurück?

Linda Hamilton
Linda HamiltonOriginal
2024-11-13 13:18:02449Durchsuche

How to Efficiently Convert PIL Images to NumPy Arrays and Back?

Konvertieren von PIL-Bildern in NumPy-Arrays und zurück

Bei der Arbeit mit pixelbasierten Transformationen können die Geschwindigkeit und Flexibilität von NumPy-Arrays gegenüber PixelAccess von PIL oft von Vorteil sein. In diesem Artikel wird gezeigt, wie Sie PIL-Bilder effizient in NumPy-Arrays und zurück konvertieren, sodass Sie die Funktionen beider Frameworks nutzen können.

PIL-Bilder in NumPy-Arrays konvertieren

import PIL.Image
import numpy as np

pic = PIL.Image.open("foo.jpg")
pix = np.array(pic.getdata()).reshape(pic.size[0], pic.size[1], 3)

Dieser Code konvertiert die PIL-Bild in ein NumPy-Array mit Abmessungen (Höhe, Breite, Kanäle).

NumPy-Array in PIL konvertieren Bild

Es stehen zwei Ansätze zur Verfügung:

Methode 1: Verwendung von pic.putdata()

data = list(tuple(pixel) for pixel in pix)
pic.putdata(data)

Beachten Sie, dass diese Methode für große Arrays langsam sein kann.

Methode 2: Verwendung von Image.fromarray() (ab PIL 1.1.6)

pix = np.array(pic) # Converts PIL Image to NumPy array
# Make changes to the array
pic = PIL.Image.fromarray(pix)

Diese Methode führt im Allgemeinen schneller aus und ist der empfohlene Ansatz für die Rückkonvertierung von NumPy-Arrays in PIL-Bilder.

Das obige ist der detaillierte Inhalt vonWie konvertiert man PIL-Bilder effizient in NumPy-Arrays und zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn