Comment convertir une image PIL en un tableau NumPy et inversement ?

DDD
Libérer: 2024-11-23 07:33:08
original
398 Les gens l'ont consulté

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

Conversion d'une image PIL en tableau NumPy

Problème :

Comment pouvez-vous convertir une image PIL en tableau NumPy pour effectuez des transformations plus rapides au niveau des pixels, puis chargez-le à nouveau dans l'image PIL après avoir modifié le tableau ?

Réponse :

Conversion en tableau NumPy :

Pour convertir une image PIL en tableau NumPy, utilisez le code suivant :

import numpy as np
from PIL import Image

pic = Image.open("foo.jpg")
pix = np.array(pic)
Copier après la connexion

Cela créera un tableau 3D de forme (hauteur, largeur, canaux) contenant des valeurs de pixels.

Conversion vers l'image PIL :

Pour charger à nouveau le tableau modifié dans l'image PIL, il existe plusieurs façons :

1. Utilisation d'Image.putdata() :

Convertissez le tableau en une séquence de tuples :

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

2. Utilisation d'Image.fromarray() (PIL 1.1.6 ou supérieur) :

Attribuez simplement le tableau modifié à l'image :

pic = Image.fromarray(pix)
Copier après la connexion

Remarques supplémentaires :

  • La méthode getdata() de l'image PIL renvoie un tableau aplati, vous devez donc remodeler pour obtenir un tableau 3D.
  • Le tableau NumPy de np.array(pic) a l'axe des canaux comme dernière dimension, tandis que la méthode getdata() suppose l'axe des canaux comme première dimension.
  • La méthode Image.fromarray() permet une conversion plus rapide, notamment pour les grandes images.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal