Maison >développement back-end >Tutoriel Python >Comment convertir efficacement les images PIL en tableaux NumPy pour les transformations de pixels ?
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)
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)
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)
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)
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)
Alternativement, on peut modifier le PIL d'origine image en utilisant le tableau NumPy modifié avec :
pic.putdata(modified_pix)
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!