1. Changer le mode couleur
Une image peut être représentée dans différents modes couleur, comme :
- RGB : Mode couleur standard.
- L : Nuances de gris.
- CMYK : Utilisé pour l’impression.
- RGBA : RGB avec canal alpha (pour la transparence).
Pour convertir une image dans un autre mode couleur, utilisez la méthode convert().
Conversion en nuances de gris
Pour rendre une image en noir et blanc, utilisez le mode couleur L :
# Conversion en nuances de gris
gray_image = image.convert("L")
gray_image.save("gray_example.jpg")
Ce code convertit une image en noir et blanc et la sauvegarde dans un fichier gray_example.jpg. C’est utile si vous voulez créer un style monochrome ou préparer une image pour analyse, où seuls les niveaux de luminosité sont importants.
Conversion en mode CMYK
CMYK est souvent utilisé dans l’impression. Convertir une image dans ce mode peut être utile si elle est destinée à l’impression.
# Conversion en CMYK
cmyk_image = image.convert("CMYK")
cmyk_image.save("cmyk_example.jpg")
2. Appliquer des filtres à une image
Pillow propose plusieurs filtres intégrés que vous pouvez utiliser pour créer divers effets. Ces filtres se trouvent dans le module ImageFilter.
Appliquer des filtres de flou, contours et netteté
from PIL import ImageFilter
# Appliquer un filtre de flou
blurred_image = image.filter(ImageFilter.BLUR)
blurred_image.save("blurred_example.jpg")
# Appliquer un filtre de contours
contour_image = image.filter(ImageFilter.CONTOUR)
contour_image.save("contour_example.jpg")
# Appliquer un filtre de netteté
sharpened_image = image.filter(ImageFilter.SHARPEN)
sharpened_image.save("sharpened_example.jpg")
Voici les trois filtres que nous appliquons :
- BLUR : Floute l’image, utile pour créer des effets doux.
- CONTOUR : Met en évidence les contours des objets de l’image.
- SHARPEN : Augmente la netteté, rendant l’image plus claire.
Autres filtres
Quelques autres filtres utiles dans Pillow :
- DETAIL : Met en avant les détails.
- EDGE_ENHANCE : Renforce les bords.
- SMOOTH : Adoucit l’image.
# Appliquer un filtre pour renforcer les bords
edge_image = image.filter(ImageFilter.EDGE_ENHANCE)
edge_image.save("edge_enhance_example.jpg")
3. Ajuster la luminosité, le contraste, la netteté et la saturation
Le package ImageEnhance de Pillow permet de modifier facilement la luminosité, le contraste, la netteté et la saturation des couleurs d’une image.
Ajuster la luminosité
Pour modifier la luminosité, utilisez la classe ImageEnhance.Brightness. Le coefficient de luminosité peut être tout nombre : 1.0 — luminosité d’origine, moins de 1.0 — assombrissement, plus de 1.0 — augmentation de la luminosité.
from PIL import ImageEnhance
# Modifier la luminosité
enhancer = ImageEnhance.Brightness(image)
brighter_image = enhancer.enhance(1.5) # Augmentation de la luminosité de 50%
brighter_image.save("brighter_example.jpg")
Ajuster le contraste
Le contraste rend les zones claires plus claires et les zones sombres plus sombres. Pour modifier le contraste, utilisez ImageEnhance.Contrast.
# Modifier le contraste
enhancer = ImageEnhance.Contrast(image)
higher_contrast_image = enhancer.enhance(1.5) # Augmentation du contraste de 50%
higher_contrast_image.save("higher_contrast_example.jpg")
Ajuster la netteté
La netteté détermine la clarté des bords des objets sur une image. Pour ajuster la netteté, on utilise ImageEnhance.Sharpness.
# Modifier la netteté
enhancer = ImageEnhance.Sharpness(image)
sharper_image = enhancer.enhance(2.0) # Augmentation de la netteté par 2 fois
sharper_image.save("sharper_example.jpg")
La valeur 1.0 conserve la netteté d’origine, moins de 1.0 rend l’image plus floue, et plus de 1.0 la rend plus nette.
Ajuster la saturation des couleurs
La saturation des couleurs rend les couleurs plus ou moins vives. Pour modifier la saturation, utilisez ImageEnhance.Color.
# Modifier la saturation
enhancer = ImageEnhance.Color(image)
more_vibrant_image = enhancer.enhance(1.5) # Augmentation de la saturation de 50%
more_vibrant_image.save("more_vibrant_example.jpg")
4. Comparaison des méthodes de correction d'image
| Méthode | Description | Utilisation |
|---|---|---|
convert("L") |
Conversion de l’image en mode noir et blanc | Style monochrome, analyse des nuances |
ImageFilter |
Appliquer des filtres pour le flou, la netteté, etc. | Effets visuels, mise en évidence des objets |
ImageEnhance.Brightness |
Régler la luminosité de l’image | Éclaircissement ou assombrissement |
ImageEnhance.Contrast |
Modifier le contraste | Améliorer la visibilité des détails |
ImageEnhance.Sharpness |
Modifier la netteté | Accentuer les bords, augmenter la clarté |
ImageEnhance.Color |
Ajuster la saturation des couleurs | Créer des images lumineuses et vibrantes |
5. Exemples
Exemple de traitement complet d'une image
Assemblons tout ce qui précède pour créer un code qui effectue plusieurs étapes de correction des couleurs, applique des filtres et ajuste la luminosité, le contraste et la saturation.
from PIL import Image, ImageEnhance, ImageFilter
# Charger l’image
image = Image.open("example.jpg")
# Conversion en noir et blanc
gray_image = image.convert("L")
gray_image.save("gray_example.jpg")
# Appliquer un filtre de netteté
sharpened_image = gray_image.filter(ImageFilter.SHARPEN)
sharpened_image.save("sharpened_gray_example.jpg")
# Augmenter la luminosité
enhancer = ImageEnhance.Brightness(sharpened_image)
brighter_image = enhancer.enhance(1.3) # 30% plus lumineux
brighter_image.save("brighter_gray_example.jpg")
# Augmenter le contraste
enhancer = ImageEnhance.Contrast(brighter_image)
higher_contrast_image = enhancer.enhance(1.5) # 50% de contraste en plus
higher_contrast_image.save("final_example.jpg")
Application pratique de la correction des couleurs
- Traitement des photos : Régler la luminosité et le contraste peut améliorer la visibilité des détails, et les filtres aident à rendre l’image plus expressive.
- Préparation d’images pour analyse : Conversion en noir et blanc, augmentation de la netteté et du contraste aident à rendre l’image plus claire et prête pour l’analyse.
- Stylisation des images : Modifier la saturation et appliquer des filtres permet de créer des styles et effets uniques pour des projets de design.
GO TO FULL VERSION