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
Linda Hamiltonoriginal
2024-11-13 13:18:02449parcourir

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)

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)

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)

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:
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