iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
Software Development

學 Python 到底可以幹麻勒?系列 第 4

( Day 4 ) 調整圖片亮度、對比、飽和度和銳利度

  • 分享至 

  • xImage
  •  

這篇文章會介紹使用 Python Pillow 函式庫裡的 ImageEnhance 模組,調整圖片的亮度、對比、飽和度和銳利度。

原文參考:調整圖片亮度、對比、飽和度和銳利度

Python 教學 - 調整圖片亮度、對比、飽和度和清晰度

安裝 Pillow

輸入下列指令安裝 Pillow,根據個人環境使用 pip 或 pip3,如果使用 Colab 或 Anaconda Jupyter,已經內建 Pillow 函式庫。

!pip install Pillow

關於 ImageEnhance

Pillow 函式庫裡的 ImageEnhance 模組包含了四種增強影像的方法,分別是亮度 ( Brightness )、對比 ( Contrast )、飽和度 ( Color ) 和銳利度 ( Sharpness ),數值如果為 1 表示原始影像效果,使用方法如下:

import os
os.chdir('/content/drive/MyDrive/Colab Notebooks')  # Colab 換路徑使用

from PIL import Image, ImageEnhance
img = Image.open("oxxostudio.png")         # 開啟影像
brightness = ImageEnhance.Brightness(img)  # 設定 img 要加強亮度
output = brightness.enhance(factor)        # 調整亮度,factor 為一個浮點數值
                                           # 調整後的數值 = 原始數值 x factor

調整圖片亮度、對比、飽和度和清晰度

了解 ImageEnhance 的用法後,就能編輯程式,調整圖片的亮度、對比、飽和度和銳利度,下方的程式碼將同一張圖片,以八種不同參數進行調整,並透過 matplotlib 一次顯示八張圖片 ( 參考:同時顯示多張圖片 )。

import os
os.chdir('/content/drive/MyDrive/Colab Notebooks')  # Colab 換路徑使用

import matplotlib.pyplot as plt
from PIL import Image, ImageEnhance

img = Image.open("oxxostudio.jpg")
brightness = ImageEnhance.Brightness(img) # 調整亮度
contrast = ImageEnhance.Contrast(img)     # 調整對比
color = ImageEnhance.Color(img)           # 調整飽和度
sharpness = ImageEnhance.Sharpness(img)   # 調整銳利度

output_b5 = brightness.enhance(5)         # 提高亮度
output_b05 = brightness.enhance(0.5)      # 降低亮度
output_c5 = contrast.enhance(5)           # 提高對比
output_c05 = contrast.enhance(0.5)        # 降低對比
output_color5 = color.enhance(5)          # 提高飽和度
output_color01 = color.enhance(0.1)       # 降低飽和度
output_s15 = sharpness.enhance(15)        # 提高銳利度
output_s0 = sharpness.enhance(0)          # 降低銳利度

plt.figure(figsize=(15,10))          # 改變圖表尺寸
plt.subplot(241)                     # 建立 4x2 子圖表的上方從左數來第一個圖表
plt.imshow(output_b5)
plt.title('brightness:5')
plt.subplot(242)                     # 建立 4x2 子圖表的上方從左數來第二個圖表
plt.imshow(output_b05)
plt.title('brightness:0.5')
plt.subplot(243)                     # 建立 4x2 子圖表的上方從左數來第三個圖表
plt.imshow(output_c5)
plt.title('contrast:5')
plt.subplot(244)                     # 建立 4x2 子圖表的上方從左數來第四個圖表
plt.imshow(output_c05)
plt.title('contrast:0.5')
plt.subplot(245)                     # 建立 4x2 子圖表的下方從左數來第一個圖表
plt.imshow(output_color5)
plt.title('color:5')
plt.subplot(246)                     # 建立 4x2 子圖表的下方從左數來第二個圖表
plt.imshow(output_color01)
plt.title('color:0.1')
plt.subplot(247)                     # 建立 4x2 子圖表的下方從左數來第三個圖表
plt.imshow(output_s15)
plt.title('sharpness:15')
plt.subplot(248)                     # 建立 4x2 子圖表的下方從左數來第四個圖表
plt.imshow(output_s0)
plt.title('sharpness:0')

plt.show()

Python 教學 - 調整圖片亮度、對比、飽和度和清晰度

小結

一但能夠透過 Python 調整圖片的亮度、對比、飽和度...等,就可以在不需要開啟影像處理軟體的狀態下,快速調整圖片,如果搭配 glob 函式庫,更是可以進行批次調整,相當方便喔!

更多 Python 教學

大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我已經寫了超過 400 篇 Python 的教學,有興趣可以參考下方連結呦~ ^_^


上一篇
( Day 3 ) 批次調整圖片尺寸
下一篇
( Day 5 ) 裁切與旋轉圖片
系列文
學 Python 到底可以幹麻勒?41
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言