1. 更改顏色模式
影像可以以多種顏色模式表示,例如:
- RGB: 標準彩色模式。
- L: 灰階模式。
- CMYK: 用於印刷。
- RGBA: 帶有透明通道的 RGB。
可以透過 convert() 方法將影像轉換為其他顏色模式。
轉換為灰階模式
若要將影像變成黑白,請使用顏色模式 L:
# 轉換為灰階模式
gray_image = image.convert("L")
gray_image.save("gray_example.jpg")
此程式碼將影像轉換為黑白並將其存為檔案 gray_example.jpg。這對於想創建黑白風格或準備影像進行僅關注亮度的分析特別有用。
轉換為 CMYK 模式
CMYK 常用於印刷。將影像轉換為此模式有助於用於印刷的影像準備。
# 轉換為 CMYK 模式
cmyk_image = image.convert("CMYK")
cmyk_image.save("cmyk_example.jpg")
2. 對影像應用濾鏡
Pillow 提供了幾個內建濾鏡,可以用於創建各種效果。這些濾鏡位於 ImageFilter 模組中。
套用模糊、輪廓和銳化濾鏡
from PIL import ImageFilter
# 套用模糊濾鏡
blurred_image = image.filter(ImageFilter.BLUR)
blurred_image.save("blurred_example.jpg")
# 套用輪廓濾鏡
contour_image = image.filter(ImageFilter.CONTOUR)
contour_image.save("contour_example.jpg")
# 套用銳化濾鏡
sharpened_image = image.filter(ImageFilter.SHARPEN)
sharpened_image.save("sharpened_example.jpg")
這裡我們應用了三種不同的濾鏡:
- BLUR: 模糊影像,對於創造柔和效果很有用。
- CONTOUR: 突出影像中的物件輪廓。
- SHARPEN: 提升銳度,使影像更加清晰。
其他濾鏡
Pillow 中的一些其他有用濾鏡:
- DETAIL: 突出細節。
- EDGE_ENHANCE: 增強邊緣。
- SMOOTH: 平滑影像。
# 套用增強邊緣濾鏡
edge_image = image.filter(ImageFilter.EDGE_ENHANCE)
edge_image.save("edge_enhance_example.jpg")
3. 調整亮度、對比度、銳度和飽和度
Pillow 中的 ImageEnhance 套件讓我們可以輕鬆變更影像的亮度、對比度、銳度與顏色飽和度。
調整亮度
要更改亮度,請使用類別 ImageEnhance.Brightness。亮度係數可以是任何數值:1.0 — 原始亮度,小於 1.0 — 減少亮度,大於 1.0 — 增加亮度。
from PIL import ImageEnhance
# 調整亮度
enhancer = ImageEnhance.Brightness(image)
brighter_image = enhancer.enhance(1.5) # 增加亮度 50%
brighter_image.save("brighter_example.jpg")
調整對比度
對比度使亮的部分變得更亮,暗的部分變得更暗。可使用 ImageEnhance.Contrast 來調整對比度。
# 調整對比度
enhancer = ImageEnhance.Contrast(image)
higher_contrast_image = enhancer.enhance(1.5) # 增加對比度 50%
higher_contrast_image.save("higher_contrast_example.jpg")
調整銳度
銳度決定影像中物件邊緣的清晰度。可使用 ImageEnhance.Sharpness 來調整銳度。
# 調整銳度
enhancer = ImageEnhance.Sharpness(image)
sharper_image = enhancer.enhance(2.0) # 增加銳度 200%
sharper_image.save("sharper_example.jpg")
值 1.0 保持原始銳度,值小於 1.0 使影像更加模糊,而值大於 1.0 使影像更加銳利。
調整顏色飽和度
顏色飽和度使顏色變得更加或更少濃烈。可使用 ImageEnhance.Color 來變更飽和度。
# 調整飽和度
enhancer = ImageEnhance.Color(image)
more_vibrant_image = enhancer.enhance(1.5) # 增加飽和度 50%
more_vibrant_image.save("more_vibrant_example.jpg")
4. 比較影像校正方法
| 方法 | 描述 | 應用 |
|---|---|---|
convert("L") |
將影像轉換為黑白模式 | 黑白風格,亮度分析 |
ImageFilter |
套用模糊、銳化等濾鏡 | 效果疊加,物件突出 |
ImageEnhance.Brightness |
調整影像亮度 | 增加或降低亮度 |
ImageEnhance.Contrast |
調整對比度 | 改善細節可見性 |
ImageEnhance.Sharpness |
調整銳度 | 強調邊緣,增加清晰度 |
ImageEnhance.Color |
調整顏色飽和度 | 創造明亮飽和的影像 |
5. 範例
完整影像處理範例
讓我們結合上述所有內容,創建一段程式碼,執行多階段的顏色校正,應用濾鏡,調整亮度、對比度和飽和度。
from PIL import Image, ImageEnhance, ImageFilter
# 載入影像
image = Image.open("example.jpg")
# 轉換為黑白模式
gray_image = image.convert("L")
gray_image.save("gray_example.jpg")
# 套用銳化濾鏡
sharpened_image = gray_image.filter(ImageFilter.SHARPEN)
sharpened_image.save("sharpened_gray_example.jpg")
# 增加亮度
enhancer = ImageEnhance.Brightness(sharpened_image)
brighter_image = enhancer.enhance(1.3) # 增加亮度 30%
brighter_image.save("brighter_gray_example.jpg")
# 增加對比度
enhancer = ImageEnhance.Contrast(brighter_image)
higher_contrast_image = enhancer.enhance(1.5) # 增加對比度 50%
higher_contrast_image.save("final_example.jpg")
實際應用顏色校正
- 照片處理: 調整亮度與對比度可改善照片的細節可見性,而濾鏡能讓影像更具表現力。
- 影像分析準備: 轉換為黑白、提高銳度與對比度能讓影像更加清晰,適合分析。
- 影像風格化: 調整飽和度並套用濾鏡可創造獨特風格和效果,適合設計專案。
GO TO FULL VERSION