Maison > développement back-end > Tutoriel Python > Comment convertir efficacement des images PIL en tableaux NumPy et inversement ?

Comment convertir efficacement des images PIL en tableaux NumPy et inversement ?

Linda Hamilton
Libérer: 2024-11-13 13:18:02
original
520 Les gens l'ont consulté

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

Conversion d'images PIL en tableaux NumPy et inversement

Lorsque vous travaillez avec des transformations basées sur les pixels, la vitesse et la flexibilité des tableaux NumPy peuvent souvent être avantageuses par rapport à PixelAccess de PIL. Cet article montre comment convertir efficacement les images PIL en tableaux NumPy et inversement, vous permettant d'exploiter les capacités des deux frameworks.

Conversion de l'image PIL en tableau NumPy

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)
Copier après la connexion

Ce code convertit le Image PIL en un tableau NumPy avec des dimensions (hauteur, largeur, canaux).

Conversion du tableau NumPy en image PIL

Deux approches sont disponibles :

Méthode 1 : Utilisation de pic .putdata()

data = list(tuple(pixel) for pixel in pix)
pic.putdata(data)
Copier après la connexion

Notez que cette méthode peut être lente pour les grands tableaux.

Méthode 2 : Utilisation d'Image.fromarray() (à partir de PIL 1.1.6)

pix = np.array(pic) # Converts PIL Image to NumPy array
# Make changes to the array
pic = PIL.Image.fromarray(pix)
Copier après la connexion

Cette méthode fonctionne généralement plus rapidement et constitue l'approche recommandée pour reconvertir les tableaux NumPy en images PIL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal