调整图片亮度和对比
这篇文章会介绍使用 Python Pillow 函数库里的 ImageEnhance 模组,调整图片的亮度、对比、饱和度和锐利度。
- 本篇使用的 Python 版本为 3.7.12,所有范例可使用 Google Colab 实作,不用安装任何软件 ( 参考:使用 Google Colab )
- 使用 Colab 操作需要连动 Google 云端硬盘,请参考:连动 Google Drive
安装 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
调整图片亮度并储存
延伸上面的用法,搭配 Pillow 内建的 save 方法,就能将调整后的图片存档。
from PIL import Image, ImageEnhance
img = Image.open("mona.jpg") # 開啟影像
brightness = ImageEnhance.Brightness(img) # 設定 img 要加強亮度
output = brightness.enhance(1.5) # 提高亮度
output.save('mona_b15.jpg') # 存檔
output = brightness.enhance(0.5) # 降低亮度
output.save('mona_b05.jpg') # 存檔
调整图片亮度、对比、饱和度和清晰度
了解 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()
微信扫码关注
抖音扫码关注