Python

Tutoriel : Traitement d’images avec Python et Pillow

×

Recommandés

Python & Pickle : manipuler les fichiers...
Pickle est la bibliothèque standard de...
En savoir plus
Différence entre une Liste et un Tableau...
Python est un langage de programmation...
En savoir plus
Guide complet sur tkinter Multiline Entry
Tkinter est une bibliothèque Python populaire...
En savoir plus
Convertir une image couleur en niveau de...
La conversion d'une image couleur en...
En savoir plus
Python: QU’EST-CE QUE PYGAME ET COMMENT L’INSTALLER...
Bienvenue dans le tutoriel python dans...
En savoir plus
Comment calculer un pourcentage/python calcul du pourcentage
L'objectif de cette page est de...
En savoir plus

Pillow est une bibliothèque Python très populaire qui permet de manipuler facilement des images. Dans ce tutoriel, nous allons explorer différentes fonctionnalités de Pillow pour charger, modifier et sauvegarder des images.

Installation

Pour commencer, assurez-vous d’avoir Python installé sur votre système. Vous pouvez télécharger la dernière version sur Python.org.

Ensuite, installez la bibliothèque Pillow en utilisant pip, le gestionnaire de packages de Python :

pip install Pillow
Charger une image

Commençons par charger une image existante. Vous pouvez utiliser n’importe quelle image au format pris en charge (PNG, JPEG, GIF, etc.).

from PIL import Image

# Charger l'image
image = Image.open("exemple.jpg")

# Afficher l'image
image.show()
Modifier une image

Pillow offre une grande variété de méthodes pour modifier les images. Voici quelques exemples courants :

Redimensionner une image
# Redimensionner l'image à une taille spécifique
largeur = 400
hauteur = 300
image_redimensionnee = image.resize((largeur, hauteur))

# Afficher l'image redimensionnée
image_redimensionnee.show()
Convertir une image en niveaux de gris
image_niveaux_de_gris = image.convert('L')
image_niveaux_de_gris.show()
Appliquer des filtres
from PIL import ImageFilter

# Appliquer un filtre de flou gaussien
image_flou = image.filter(ImageFilter.GaussianBlur(radius=2))
image_flou.show()
Faire pivoter une image
# Faire pivoter l'image de 90 degrés dans le sens des aiguilles d'une montre
image_pivot = image.rotate(90)
image_pivot.show()
Sauvegarder une image modifiée

Une fois que vous avez apporté les modifications souhaitées à votre image, vous pouvez les sauvegarder dans un nouveau fichier.

# Sauvegarder l'image modifiée
image_redimensionnee.save("nouvelle_image.jpg")

Voici quelques exemples plus avancés de traitement d’images avec Pillow :

1. Segmenter une image avec la méthode de clustering K-Means
from PIL import Image
import numpy as np
from sklearn.cluster import KMeans

# Charger l'image
image = Image.open("exemple.jpg")

# Convertir l'image en tableau numpy
image_array = np.array(image)

# Appliquer la méthode de clustering K-Means pour segmenter l'image en 5 couleurs
kmeans = KMeans(n_clusters=5)
kmeans.fit(image_array.reshape(-1, 3))
colors = kmeans.cluster_centers_.astype(int)
labels = kmeans.labels_
segmented_image = colors[labels].reshape(image_array.shape).astype(np.uint8)

# Afficher l'image segmentée
Image.fromarray(segmented_image).show()
2. Appliquer une transformation de perspective
from PIL import Image
import numpy as np

# Charger l'image
image = Image.open("exemple.jpg")

# Définir les coins de l'image d'origine
points_origine = np.array([[0, 0], [image.width, 0], [image.width, image.height], [0, image.height]])

# Définir les nouveaux coins après la transformation
nouveau_points = np.array([[50, 50], [image.width - 100, 100], [image.width, image.height - 50], [100, image.height - 100]])

# Calculer la matrice de transformation
matrice_transformation = cv2.getPerspectiveTransform(points_origine.astype(np.float32), nouveau_points.astype(np.float32))

# Appliquer la transformation à l'image
image_transformee = cv2.warpPerspective(np.array(image), matrice_transformation, (image.width, image.height))

# Afficher l'image transformée
Image.fromarray(image_transformee).show()
3. Détection de visages avec OpenCV et superposition de rectangles
import cv2

# Charger l'image en niveaux de gris
image_gris = cv2.cvtColor(cv2.imread("exemple.jpg"), cv2.COLOR_BGR2GRAY)

# Charger le classificateur de visage pré-entraîné
classificateur_visage = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")

# Détecter les visages dans l'image
visages = classificateur_visage.detectMultiScale(image_gris, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

# Dessiner des rectangles autour des visages détectés
image_visages = cv2.imread("exemple.jpg")
for (x, y, w, h) in visages:
    cv2.rectangle(image_visages, (x, y), (x+w, y+h), (255, 0, 0), 2)

# Afficher l'image avec les visages détectés
Image.fromarray(image_visages).show()

Ces exemples illustrent quelques tâches plus avancées que vous pouvez réaliser avec Pillow en combinaison avec d’autres bibliothèques comme NumPy et OpenCV. Vous pouvez les utiliser comme point de départ pour explorer davantage le traitement d’images et créer des applications plus sophistiquées.

Voici quelques cas particuliers de traitement d’images avec Pillow :

1. Conversion d’une image en ASCII art
from PIL import Image

# Définir une chaîne de caractères représentant différentes nuances de gris
ascii_chars = "@%#*+=-:. "

# Charger l'image en niveaux de gris
image = Image.open("exemple.jpg").convert("L")

# Redimensionner l'image pour correspondre à la taille souhaitée pour l'ASCII art
largeur, hauteur = image.size
largeur_redimensionnee = 100
rapport_aspect = hauteur / float(largeur)
hauteur_redimensionnee = int(largeur_redimensionnee * rapport_aspect)
image = image.resize((largeur_redimensionnee, hauteur_redimensionnee))

# Convertir chaque pixel en caractère ASCII
ascii_art = ""
pixels = image.load()
for y in range(hauteur_redimensionnee):
    for x in range(largeur_redimensionnee):
        pixel = pixels[x, y]
        indice_char = pixel // 25  # Convertir la valeur de pixel (0-255) en un indice pour ascii_chars
        ascii_art += ascii_chars[indice_char]
    ascii_art += "\n"

# Afficher l'ASCII art
print(ascii_art)
2. Création d’une mosaïque d’images
from PIL import Image

# Charger les images
image1 = Image.open("image1.jpg")
image2 = Image.open("image2.jpg")

# Définir la taille de la mosaïque
largeur, hauteur = 800, 600

# Redimensionner les images pour qu'elles correspondent à la taille de la mosaïque
image1 = image1.resize((largeur // 2, hauteur))
image2 = image2.resize((largeur // 2, hauteur))

# Créer une nouvelle image pour la mosaïque
mosaique = Image.new("RGB", (largeur, hauteur))

# Placer les images dans la mosaïque
mosaique.paste(image1, (0, 0))
mosaique.paste(image2, (largeur // 2, 0))

# Afficher la mosaïque
mosaique.show()

3. Création d’une image avec des motifs répétés

from PIL import Image, ImageDraw

# Créer une nouvelle image
largeur, hauteur = 400, 400
image = Image.new("RGB", (largeur, hauteur), "white")

# Dessiner des motifs répétés
taille_motif = 20
draw = ImageDraw.Draw(image)
for x in range(0, largeur, taille_motif):
    for y in range(0, hauteur, taille_motif):
        if (x + y) % (taille_motif * 2) == 0:
            draw.rectangle([x, y, x + taille_motif, y + taille_motif], fill="black")

# Afficher l'image avec les motifs répétés
image.show()

Ces cas particuliers montrent quelques exemples uniques de ce que vous pouvez faire avec Pillow en dehors des opérations de traitement d’images standard. Vous pouvez expérimenter avec ces idées et les adapter à vos propres projets pour créer des effets visuels intéressants et des applications créatives.

Conclusion

Pillow est une bibliothèque puissante et flexible pour le traitement d’images en Python. Ce tutoriel a couvert les bases pour charger, modifier et sauvegarder des images, mais il existe de nombreuses autres fonctionnalités à découvrir. N’hésitez pas à explorer la documentation de Pillow pour en savoir plus sur ses capacités étendues.

Recommandés

Manipulation des Tableaux en Python avec Numpy
Numpy est une bibliothèque puissante et...
En savoir plus
Afficher un Tableau avec Pandas - Cas...
Pour afficher un tableau en Python,...
En savoir plus
Guide complet des Design Patterns en Python
Les Design Patterns, ou motifs de...
En savoir plus
La Fonction chr() en Python : Exercices...
La fonction chr() en Python est...
En savoir plus
Comment lire un fichier CSV en Python...
Les fichiers CSV en Python (Comma...
En savoir plus
Calcul de la factorielle en Python :...
La factorielle d'un entier positif n,...
En savoir plus
AZ

Recent Posts

Mémoire Master transformation digitale : exemple , plan détaillé et modèle Word à télécharger

La transformation digitale n’est plus un projet technologique isolé. Elle constitue aujourd’hui un véritable levier…

8 minutes ago

Mémoire achats PDF exemple complet et modèle universitaire à télécharger

La fonction achats occupe aujourd’hui une place stratégique au cœur de la performance des organisations.…

1 heure ago

Mémoire plan de continuité d’activité PCA : modèle Word à télécharger + méthode

📄 Télécharger le modèle Word premium du mémoire PCA — plan complet, tableaux BIA, matrice…

2 heures ago

Plan de mémoire de master prêt à copier + modèle Word à remplir

Rédiger un mémoire de master commence rarement par l’écriture elle-même. La première véritable étape consiste…

8 heures ago

Projet de recherche doctorat : méthode complète, structure académique et exemples concrets

Téléchargez le modèle - projet de recherche doctorale -, suivez la trame, puis transformez votre…

11 heures ago

Les écrits professionnels dans le secteur social et médico-social

Comprendre, rédiger et sécuriser ses écrits au quotidien Dans le secteur social et médico-social, l’écrit…

1 jour ago

This website uses cookies.