1. Zmiana trybu kolorów
Obraz może być przedstawiony w różnych trybach kolorów, takich jak:
- RGB: Standardowy tryb kolorowy.
- L: Odcienie szarości.
- CMYK: Używany w druku.
- RGBA: RGB z kanałem alfa (dla przezroczystości).
Przekształcenie obrazu na inny tryb kolorów można wykonać za pomocą metody convert()
.
Konwersja na odcienie szarości
Aby obraz stał się czarno-biały, użyj trybu kolorów L
:
# Konwersja na odcienie szarości
gray_image = image.convert("L")
gray_image.save("gray_example.jpg")
Ten kod przekształca obraz na czarno-biały i zapisuje go do pliku gray_example.jpg
. Jest to przydatne, jeśli chcesz stworzyć czarno-biały styl lub przygotować obraz do analizy, gdzie ważne są tylko poziomy jasności.
Konwersja na tryb CMYK
CMYK jest często używany w poligrafii. Przekształcenie obrazu na ten tryb może być przydatne, jeśli obraz jest przeznaczony do druku.
# Konwersja na CMYK
cmyk_image = image.convert("CMYK")
cmyk_image.save("cmyk_example.jpg")
2. Stosowanie filtrów na obrazie
Pillow oferuje kilka wbudowanych filtrów, które można wykorzystać do tworzenia różnych efektów. Filtry te znajdują się w module ImageFilter
.
Stosowanie filtrów rozmycia, konturu i ostrości
from PIL import ImageFilter
# Stosowanie filtra rozmycia
blurred_image = image.filter(ImageFilter.BLUR)
blurred_image.save("blurred_example.jpg")
# Stosowanie filtra konturów
contour_image = image.filter(ImageFilter.CONTOUR)
contour_image.save("contour_example.jpg")
# Stosowanie filtra ostrości
sharpened_image = image.filter(ImageFilter.SHARPEN)
sharpened_image.save("sharpened_example.jpg")
Tu stosujemy trzy różne filtry:
- BLUR: Rozmycie obrazu, co jest przydatne do tworzenia miękkich efektów.
- CONTOUR: Wyróżnianie konturów obiektów na obrazie.
- SHARPEN: Zwiększenie ostrości, co sprawia, że obraz staje się bardziej wyraźny.
Inne filtry
Niektóre inne przydatne filtry dostępne w Pillow:
- DETAIL: Podkreśla szczegóły.
- EDGE_ENHANCE: Wzmacnia krawędzie.
- SMOOTH: Wygładza obraz.
# Stosowanie filtra wzmacniającego krawędzie
edge_image = image.filter(ImageFilter.EDGE_ENHANCE)
edge_image.save("edge_enhance_example.jpg")
3. Dostosowanie jasności, kontrastu, ostrości i nasycenia
Pakiet ImageEnhance
w Pillow pozwala łatwo zmieniać jasność, kontrast, ostrość i nasycenie kolorów obrazu.
Dostosowanie jasności
Aby zmienić jasność, użyj klasy ImageEnhance.Brightness
. Współczynnik jasności może być dowolną liczbą: 1.0
— pierwotna jasność, mniej niż 1.0
— przyciemnienie, więcej niż 1.0
— zwiększenie jasności.
from PIL import ImageEnhance
# Zmiana jasności
enhancer = ImageEnhance.Brightness(image)
brighter_image = enhancer.enhance(1.5) # Zwiększenie jasności o 50%
brighter_image.save("brighter_example.jpg")
Dostosowanie kontrastu
Kontrast sprawia, że jasne obszary stają się jaśniejsze, a ciemne — ciemniejsze. Do dostosowania kontrastu użyj ImageEnhance.Contrast
.
# Zmiana kontrastu
enhancer = ImageEnhance.Contrast(image)
higher_contrast_image = enhancer.enhance(1.5) # Zwiększenie kontrastu o 50%
higher_contrast_image.save("higher_contrast_example.jpg")
Dostosowanie ostrości
Ostrość określa, jak wyraźne będą krawędzie obiektów na obrazie. Do dostosowania ostrości użyj ImageEnhance.Sharpness
.
# Zmiana ostrości
enhancer = ImageEnhance.Sharpness(image)
sharper_image = enhancer.enhance(2.0) # Zwiększenie ostrości dwukrotnie
sharper_image.save("sharper_example.jpg")
Wartość 1.0
zachowuje pierwotną ostrość, poniżej 1.0
obraz staje się bardziej rozmyty, a powyżej 1.0
— bardziej ostry.
Dostosowanie nasycenia kolorów
Nasycenie kolorów sprawia, że kolory stają się bardziej lub mniej intensywne. Aby zmienić nasycenie, użyj ImageEnhance.Color
.
# Zmiana nasycenia
enhancer = ImageEnhance.Color(image)
more_vibrant_image = enhancer.enhance(1.5) # Zwiększenie nasycenia o 50%
more_vibrant_image.save("more_vibrant_example.jpg")
4. Porównanie metod korekcji obrazu
Metoda | Opis | Zastosowanie |
---|---|---|
convert("L") |
Przekształcenie obrazu w tryb czarno-biały | Styl czarno-biały, analiza odcieni |
ImageFilter |
Stosowanie filtrów do rozmycia, ostrości itp. | Efekty nakładania, wyróżnianie obiektów |
ImageEnhance.Brightness |
Regulacja jasności obrazu | Rozjaśnianie lub przyciemnianie |
ImageEnhance.Contrast |
Zmiana kontrastu | Poprawa widoczności szczegółów |
ImageEnhance.Sharpness |
Zmiana ostrości | Podkreślanie krawędzi, zwiększanie wyrazistości |
ImageEnhance.Color |
Dostosowanie nasycenia kolorów | Tworzenie jasnych, nasyconych obrazów |
5. Przykłady
Przykład pełnej obróbki obrazu
Połączmy wszystko powyższe i stwórzmy kod, który wykonuje kilka etapów korekcji kolorów, stosuje filtry, zmienia jasność, kontrast i nasycenie.
from PIL import Image, ImageEnhance, ImageFilter
# Załadowanie obrazu
image = Image.open("example.jpg")
# Konwersja na tryb czarno-biały
gray_image = image.convert("L")
gray_image.save("gray_example.jpg")
# Stosowanie filtra ostrości
sharpened_image = gray_image.filter(ImageFilter.SHARPEN)
sharpened_image.save("sharpened_gray_example.jpg")
# Zwiększenie jasności
enhancer = ImageEnhance.Brightness(sharpened_image)
brighter_image = enhancer.enhance(1.3) # O 30% jaśniej
brighter_image.save("brighter_gray_example.jpg")
# Zwiększenie kontrastu
enhancer = ImageEnhance.Contrast(brighter_image)
higher_contrast_image = enhancer.enhance(1.5) # O 50% większy kontrast
higher_contrast_image.save("final_example.jpg")
Praktyczne zastosowanie korekcji kolorów
- Obróbka zdjęć: Regulacja jasności i kontrastu może poprawić widoczność szczegółów na zdjęciu, a filtry pomogą uczynić obraz bardziej wyrazistym.
- Przygotowanie obrazów do analizy: Konwersja na czarno-białe, zwiększenie ostrości i kontrastu pomogą uczynić obraz bardziej wyraźnym i nadającym się do analizy.
- Stylizacja obrazów: Zmiana nasycenia i stosowanie filtrów pozwalają stworzyć unikalne style i efekty do projektów designerskich.
GO TO FULL VERSION