madamasterclass.com

📔 Manipulation d'images avec Python

Étude des manipulations d'images avec Python.


Titre de l'activité : APPRENDRE À MANIPULER UNE IMAGE NUMÉRIQUE
Objectif

Le but de cette activité est d'apprendre à manipuler une image numérique en utilisant le langage de programmation Python. Vous allez apprendre à traiter par programme une image en agissant sur les trois composantes de ses pixels.

Matériel nécessaire :
  •                 1️⃣ Un ordinateur avec une installation de Python
  •                 2️⃣ Un éditeur de code Python (comme PyCharm, Visual Studio Code, ou tout autre éditeur de votre choix)

Instructions

1️⃣ Introduction (10 minutes):

Dans cette activité, vous allez découvrir comment manipuler une image numérique en utilisant Python. Vous apprendrez à appliquer différentes transformations à une image pour obtenir des effets visuels intéressants.

2️⃣ Présentation du scénario (5 minutes) : 

Imaginez que vous êtes un photographe numérique travaillant sur une série d'images. Votre tâche consiste à appliquer des transformations à ces images pour obtenir des résultats uniques et créatifs.

3️⃣ Importation des bibliothèques (5 minutes) : 

Pour commencer, vous devez importer les bibliothèques nécessaires pour travailler avec des images en Python. Les bibliothèques couramment utilisées sont Pillow (anciennement PIL) et NumPy. Assurez-vous que ces bibliothèques sont installées sur votre ordinateur.

from PIL import Image
import numpy as np

4️⃣ Chargement de l'image (10 minutes):

Choisissez une image que vous souhaitez manipuler. Vous allez la charger dans votre programme Python.

image = Image.open("chemin_vers_l_image.jpg")
pixels = np.array(image)

5️⃣ Traitement des pixels (20 minutes) : 

Maintenant, vous pouvez commencer à manipuler les pixels de l'image. Les pixels sont les petits éléments qui composent une image. Vous pouvez agir sur les trois composantes de couleur (rouge, vert, bleu) de chaque pixel pour obtenir des effets différents. Par exemple, pour inverser les couleurs de l'image, vous pouvez utiliser la formule suivante :

inverted_pixels = 255 - pixels

N'hésitez pas à essayer d'autres transformations créatives, comme l'ajustement de la luminosité, le changement des teintes de couleur, le flou, etc.

6️⃣ Affichage de l'image traitée (10 minutes) : 

Une fois que vous avez effectué les transformations souhaitées, vous pouvez afficher l'image traitée pour voir le résultat.

new_image = Image.fromarray(inverted_pixels)
new_image.show()

7️⃣ Enregistrement de l'image traitée (5 minutes) : 

Si vous êtes satisfait du résultat, vous pouvez enregistrer l'image traitée dans un fichier pour la conserver.

new_image.save("chemin_vers_l_image_traitee.jpg")

8️⃣ Conclusion (5 minutes) : 

Félicitations ! Vous avez appris à manipuler une image numérique en utilisant Python. N'hésitez pas à continuer à explorer et à expérimenter d'autres transformations pour obtenir des effets visuels uniques. Amusez-vous bien et continuez à développer vos compétences en traitement d'image !


La manipulation d'images est un aspect essentiel de l'informatique, permettant de traiter, modifier et analyser des images numériques. En Python, la bibliothèque Pillow est largement utilisée pour effectuer ces opérations.

1. Installation de Pillow

Pour commencer à manipuler des images, vous devez d'abord installer la bibliothèque Pillow. Utilisez la commande suivante :

⌨️  
pip install Pillow
2. Chargement et affichage d'images

Pour manipuler une image, commencez par la charger. Voici comment procéder :

⌨️  
from PIL import Image
image = Image.open("mon_image.jpg")
image.show()
3. Conversion en niveaux de gris

La conversion d'une image couleur en niveaux de gris est une opération courante. Voici comment faire :

⌨️  
gray_image = image.convert("L")
gray_image.show()
4. Application de filtres

Pillow permet d'appliquer des filtres aux images. Par exemple, pour appliquer un filtre de flou :

⌨️  
from PIL import ImageFilter
blurred_image = image.filter(ImageFilter.BLUR)
blurred_image.show()
5. Redimensionnement d'images

Vous pouvez redimensionner une image pour l'adapter à vos besoins :

⌨️  
resized_image = image.resize((300, 300))
resized_image.show()
6. Sauvegarde d'images

Après manipulation, il est essentiel de sauvegarder vos images :

⌨️  
resized_image.save("mon_image_redimensionnee.jpg")
7. Conclusion

La manipulation d'images avec Python et Pillow est un processus accessible et puissant. Grâce à ces outils, vous pouvez facilement charger, modifier et sauvegarder des images, ouvrant la voie à de nombreuses applications créatives et analytiques.

Exercice 1: ★ ★ ★ ☆ ☆

Chargez une image à partir de votre disque et affichez-la.

Solution :
from PIL import Image
image = Image.open("mon_image.jpg")
image.show()


Exercice 2: ★ ★ ★ ★ ☆

Convertissez une image couleur en niveaux de gris et sauvegardez-la.

Solution :
from PIL import Image
image = Image.open("mon_image.jpg")
gray_image = image.convert("L")
gray_image.show()
gray_image.save("mon_image_grise.jpg")


Exercice 3: ★ ★ ★ ★ ★

Appliquez un filtre de flou à une image et affichez le résultat.

Solution :
from PIL import Image, ImageFilter
image = Image.open("mon_image.jpg")
blurred_image = image.filter(ImageFilter.BLUR)
blurred_image.show()


Exercice 4: ★ ★ ★ ☆ ☆

Redimensionnez une image à 300x300 pixels et sauvegardez-la.

Solution :
from PIL import Image
image = Image.open("mon_image.jpg")
resized_image = image.resize((300, 300))
resized_image.show()
resized_image.save("mon_image_redimensionnee.jpg")


Exercice 5: ★ ★ ★ ★ ☆

Faites une rotation de 90 degrés d'une image et affichez le résultat.

Solution :
from PIL import Image
image = Image.open("mon_image.jpg")
rotated_image = image.rotate(90)
rotated_image.show()


Exercice 6: ★ ★ ★ ★ ☆

Inversez les couleurs d'une image en manipulant ses pixels.

Solution :
from PIL import Image
import numpy as np
image = Image.open("mon_image.jpg")
pixels = np.array(image)
inverted_pixels = 255 - pixels
new_image = Image.fromarray(inverted_pixels)
new_image.show()


Exercice 7: ★ ★ ★ ★ ★

Ajoutez un effet de sépia à une image.

Solution :
from PIL import Image
import numpy as np
image = Image.open("mon_image.jpg")
pixels = np.array(image)
sepia_filter = np.array([[0.393, 0.769, 0.189],
[0.349, 0.686, 0.168],
[0.272, 0.534, 0.131]])
sepia_pixels = pixels @ sepia_filter.T
sepia_pixels = np.clip(sepia_pixels, 0, 255).astype(np.uint8)
new_image = Image.fromarray(sepia_pixels)
new_image.show()


Exercice 8: ★ ★ ★ ☆ ☆

Augmentez la luminosité d'une image en manipulant ses pixels.

Solution :
from PIL import Image
import numpy as np
image = Image.open("mon_image.jpg")
pixels = np.array(image)
bright_pixels = np.clip(pixels + 50, 0, 255)
new_image = Image.fromarray(bright_pixels)
new_image.show()


Exercice 9: ★ ★ ★ ★ ★

Appliquez un flou gaussien à une image en manipulant ses pixels.

Solution :
from PIL import Image, ImageFilter
image = Image.open("mon_image.jpg")
blurred_image = image.filter(ImageFilter.GaussianBlur(radius=5)
blurred_image.show()


Exercice 10: ★ ★ ★ ☆ ☆

Convertissez une image en noir et blanc en manipulant ses pixels.

Solution :
from PIL import Image
import numpy as np
image = Image.open("mon_image.jpg")
pixels = np.array(image)
gray_pixels = np.dot(pixels[..., :3], [0.2989, 0.5870, 0.1140])
bw_pixels = np.where(gray_pixels > 128, 255, 0).astype(np.uint8)
new_image = Image.fromarray(bw_pixels)
new_image.show()



Détail sur la manipulation d'images en Python
Introduction

La manipulation d'images en Python est largement facilitée par la bibliothèque Pillow, qui permet de traiter facilement les pixels d'une image. Ce cours va explorer diverses techniques pour modifier les images en utilisant des manipulations de pixels.

1. Inversion des Couleurs

L'inversion des couleurs consiste à changer chaque pixel de l'image pour que sa valeur soit remplacée par sa couleur complémentaire. Par exemple, le rouge devient du cyan, le vert devient du magenta, et ainsi de suite.

from PIL import Image
import numpy as np

# Chargement de l'image
image = Image.open("mon_image.jpg")

# Conversion de l'image en tableau de pixels
pixels = np.array(image)

# Inversion des couleurs
inverted_pixels = 255 - pixels

# Création d'une nouvelle image à partir des pixels inversés
new_image = Image.fromarray(inverted_pixels)
new_image.show()

Dans ce code :

  • Image.open() charge l'image depuis le disque.
  • np.array() convertit l'image en un tableau NumPy pour faciliter la manipulation.
  • 255 - pixels inverse les couleurs en soustrayant chaque valeur de couleur de 255.
  • Image.fromarray() crée une nouvelle image à partir du tableau inversé.

2. Application d'un Effet Sépia

L'effet sépia donne une teinte brunâtre à l'image, imitant l'apparence des photos anciennes.

from PIL import Image
import numpy as np

# Chargement de l'image
image = Image.open("mon_image.jpg")

# Conversion de l'image en tableau de pixels
pixels = np.array(image)

# Matrice du filtre sépia
sepia_filter = np.array([[0.393, 0.769, 0.189],
                         [0.349, 0.686, 0.168],
                         [0.272, 0.534, 0.131]])

# Application du filtre sépia
sepia_pixels = pixels @ sepia_filter.T
sepia_pixels = np.clip(sepia_pixels, 0, 255).astype(np.uint8)

# Création d'une nouvelle image à partir des pixels sépia
new_image = Image.fromarray(sepia_pixels)
new_image.show()

Dans ce code :

  • La matrice sepia_filter définit comment les couleurs rouge, verte et bleue doivent être combinées pour produire l'effet sépia.
  • pixels @ sepia_filter.T applique le filtre à chaque pixel.
  • np.clip() s'assure que les valeurs restent entre 0 et 255.

3. Augmentation de la Luminosité

Augmenter la luminosité d'une image consiste à ajouter une valeur constante à chaque pixel.

from PIL import Image
import numpy as np

# Chargement de l'image
image = Image.open("mon_image.jpg")

# Conversion de l'image en tableau de pixels
pixels = np.array(image)

# Augmentation de la luminosité
bright_pixels = np.clip(pixels + 50, 0, 255)

# Création d'une nouvelle image à partir des pixels lumineux
new_image = Image.fromarray(bright_pixels)
new_image.show()

Dans ce code :

  • On ajoute 50 à chaque pixel pour augmenter la luminosité.
  • np.clip() garantit que les valeurs ne dépassent pas 255.

4. Application d'un Flou Gaussien

Le flou gaussien est utilisé pour adoucir les détails d'une image, créant un effet de flou.

from PIL import Image, ImageFilter

# Chargement de l'image
image = Image.open("mon_image.jpg")

# Application du flou gaussien
blurred_image = image.filter(ImageFilter.GaussianBlur(radius=5))
blurred_image.show()

Dans ce code :

  • ImageFilter.GaussianBlur() applique un flou gaussien avec un rayon spécifié.

5. Conversion en Noir et Blanc

La conversion en noir et blanc consiste à transformer l'image en utilisant une formule pour déterminer la luminosité de chaque pixel.

from PIL import Image
import numpy as np

# Chargement de l'image
image = Image.open("mon_image.jpg")

# Conversion de l'image en tableau de pixels
pixels = np.array(image)

# Conversion en niveaux de gris
gray_pixels = np.dot(pixels[..., :3], [0.2989, 0.5870, 0.1140])

# Seuil pour convertir en noir et blanc
bw_pixels = np.where(gray_pixels > 128, 255, 0).astype(np.uint8)

# Création d'une nouvelle image à partir des pixels en noir et blanc
new_image = Image.fromarray(bw_pixels)
new_image.show()

Dans ce code :

  • np.dot() calcule la luminosité en utilisant une pondération pour les couleurs.
  • np.where() détermine si chaque pixel doit être noir ou blanc en fonction d'un seuil de 128.

Conclusion

Ces exercices illustrent comment manipuler les pixels d'une image en Python, en utilisant des techniques variées pour créer des effets visuels intéressants. En maîtrisant ces concepts, vous pouvez commencer à développer des applications plus complexes en traitement d'images.

Forum(s) associé(s)

L'Art de la Philosophie : Interprétations et Débats

08 Apr, 2016

Explorez comment l'art et la philosophie s'entrelacent pour questionner notre perception de la réalité et de l'esthétique.

Read more.

Voyage à Travers la Liberté : Concepts et Dilemmes

27 Jan, 2014

Plongez dans les débats philosophiques sur la liberté, ses implications éthiques et les défis contemporains qui l'entourent.

Read more.

La Quête de la Vérité : Philosophies et Perspectives

30 Feb, 2015

Découvrez les différentes approches philosophiques de la vérité et comment elles influencent notre compréhension du monde.

Read more.
Page: