Comment convertir efficacement les images PIL en tableaux NumPy pour la manipulation des pixels et inversement ?

Susan Sarandon
Libérer: 2024-11-19 14:18:03
original
642 Les gens l'ont consulté

How to Efficiently Convert PIL Images to NumPy Arrays for Pixel Manipulation and Back?

Conversion d'images PIL en tableaux NumPy pour une manipulation efficace des pixels

Question : Comment pouvez-vous convertir une image PIL en tableau NumPy pour des pixels plus rapides transformations intelligentes sans rencontrer de problèmes lors de la reconversion vers un PIL Image ?

Réponse :

Le processus comporte deux étapes :

Conversion de l'image PIL en tableau NumPy

Pour convertir un PIL Image dans un tableau NumPy, vous pouvez utiliser ce code comme exemple :

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

Conversion du tableau NumPy en image PIL

Utilisation de pic.putdata() :

Si pic.putdata() est ne se comporte pas comme prévu lorsque vous tentez de charger le tableau modifié dans l'image PIL, vérifiez que vous fournissez les données dans un format accepté par putdata(). Il attend une séquence de tuples, vous devrez donc peut-être convertir le tableau dans ce format, comme indiqué ci-dessous :

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

Utilisation de PIL 1.1.6 :

Depuis PIL 1.1.6, vous pouvez utiliser l'approche simplifiée suivante pour la conversion entre les images et NumPy tableaux :

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

Cela donnera lieu à un tableau tridimensionnel avec des lignes, des colonnes et des valeurs RVB.

Étapes finales :

Après avoir apporté des modifications au tableau, vous pouvez utiliser pic.putdata(pix) ou Image.fromarray(pix) pour créer un nouveau PIL. Image.

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!

source:php.cn
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