Heim > Backend-Entwicklung > Python-Tutorial > Wie konvertiere ich ein PIL-Bild in ein NumPy-Array und zurück?

Wie konvertiere ich ein PIL-Bild in ein NumPy-Array und zurück?

DDD
Freigeben: 2024-11-23 07:33:08
Original
466 Leute haben es durchsucht

How to Convert a PIL Image to a NumPy Array and Back?

PIL-Bild in NumPy-Array konvertieren

Problem:

Wie können Sie ein PIL-Bild in ein NumPy-Array konvertieren? Führen Sie schnellere pixelweise Transformationen durch und laden Sie sie dann nach der Änderung wieder in das PIL-Bild Array?

Antwort:

Konvertierung in NumPy-Array:

Um ein PIL-Bild in ein NumPy-Array zu konvertieren, verwenden Sie den folgenden Code:

import numpy as np
from PIL import Image

pic = Image.open("foo.jpg")
pix = np.array(pic)
Nach dem Login kopieren

Dadurch wird ein 3D-Array von Formen (Höhe, Breite, Kanäle), die Pixelwerte enthalten.

Konvertierung zurück in das PIL-Bild:

Um das geänderte Array zurück in das PIL-Bild zu laden, gibt es mehrere Möglichkeiten:

1. Verwenden von Image.putdata():

Konvertieren Sie das Array zurück in eine Folge von Tupeln:

data = list(tuple(pixel) for pixel in pix)
pic.putdata(data)
Nach dem Login kopieren

2. Mit Image.fromarray() (PIL 1.1.6 oder höher):

Weisen Sie einfach das geänderte Array dem Bild zu:

pic = Image.fromarray(pix)
Nach dem Login kopieren

Zusätzliche Hinweise:

  • Die getdata()-Methode des PIL-Bildes gibt ein abgeflachtes Array zurück, daher müssen Sie es umformen um ein 3D-Array zu erhalten.
  • Das NumPy-Array von np.array(pic) hat die Kanalachse als letzte Dimension, während die Methode getdata() die Kanalachse als erste Dimension annimmt.
  • Die Methode Image.fromarray() sorgt für eine schnellere Konvertierung, insbesondere bei großen Bildern.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich ein PIL-Bild in ein NumPy-Array und zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage