Maison > développement back-end > Tutoriel Python > Comment convertir efficacement les images PIL en tableaux NumPy pour les transformations de pixels ?

Comment convertir efficacement les images PIL en tableaux NumPy pour les transformations de pixels ?

Mary-Kate Olsen
Libérer: 2024-11-12 13:24:02
original
309 Les gens l'ont consulté

How to Efficiently Convert PIL Images to NumPy Arrays for Pixel Transformations?

Conversion d'images PIL en tableaux NumPy pour des transformations de pixels efficaces

Lorsque vous travaillez avec des tâches de traitement d'image, il est souvent souhaitable de convertir un PIL ( Python Imaging Library) dans un tableau NumPy pour des transformations plus rapides au niveau des pixels. Cette conversion permet une manipulation efficace des données d'image, permettant des opérations d'image plus complexes et optimisées dans le temps.

Pour convertir une image PIL en tableau NumPy, on peut utiliser l'extrait de code suivant :

pic = Image.open("foo.jpg")
pix = numpy.array(pic.getdata()).reshape(pic.size[0], pic.size[1], 3)
Copier après la connexion

Ce code lit les données d'image de l'image PIL et les remodèle en un tableau NumPy tridimensionnel, où chaque dimension représente la hauteur, la largeur et le canal de l'image (par exemple, RVB).

Pour convertir le tableau NumPy dans une image PIL après avoir effectué les transformations souhaitées, le code suivant peut être utilisé :

new_pic = Image.fromarray(modified_pix)
Copier après la connexion
Copier après la connexion

Cependant, cette méthode ne permet pas de modifier directement l'image PIL d'origine à l'aide du tableau NumPy modifié .

Avant la version 1.1.6 de PIL, la modification de l'image PIL d'origine nécessitait la conversion du tableau NumPy en une liste de tuples :

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

Cependant, cette approche peut être lente et inefficace.

Dans PIL version 1.1.6 et supérieure, la méthode préférée pour la conversion entre les images PIL et les tableaux NumPy est :

pix = numpy.array(pic)
Copier après la connexion

Cette commande produit un tableau NumPy en 3 dimensions avec des lignes, des colonnes , et les canaux RVB comme dimensions.

Après avoir effectué les transformations de pixels, le tableau mis à jour peut être reconverti en une image PIL en utilisant :

new_pic = Image.fromarray(modified_pix)
Copier après la connexion
Copier après la connexion

Alternativement, on peut modifier le PIL d'origine image en utilisant le tableau NumPy modifié avec :

pic.putdata(modified_pix)
Copier après la connexion

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