iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
Software Development

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

( Day 10 ) 圖片的模糊化與銳利化

  • 分享至 

  • xImage
  •  

這篇文章會介紹使用 Python 的 Pillow 第三方函式庫,實作四種圖片模糊化的方法,和兩種圖片銳利化的方法。

原文參考:圖片模糊化圖片銳利化

安裝 Pillow

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

!pip install Pillow

模糊化的四種方法

1、BLUR

載入 Pillow 的 Image 和 ImageFilter 模組,使用 Image.open 方法開啟圖片後,就能套用 filter 的 ImageFilter.BLUR 濾鏡,將圖片進行基本的模糊化

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

from PIL import Image, ImageFilter
img = Image.open('oxxostudio.jpg')     # 開啟圖片
output = img.filter(ImageFilter.BLUR)  # 套用基本模糊化
output.save('output.jpg')
# output.show()  # Colab 不支援直接顯示,如果使用本機環境會開啟圖片檢視器

Python 教學 - 圖片模糊化

2、BoxBlur

除了基本的模糊化 BLUR 方法,也可以使用 ImageFilter.BoxBlur 濾鏡,設定模糊化的半徑,進行不同程度的模糊化效果

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

from PIL import Image, ImageFilter
img = Image.open('oxxostudio.jpg')
output = img.filter(ImageFilter.BoxBlur(5))  # 套用 BoxBlur,設定模糊半徑為 5
output.save('output.jpg')

Python 教學 - 圖片模糊化

3、GaussianBlur

使用 ImageFilter.GaussianBlur 濾鏡,設定高斯模糊的半徑,進行不同程度的模糊化效果

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

from PIL import Image, ImageFilter
img = Image.open('oxxostudio.jpg')
output = img.filter(ImageFilter.GaussianBlur(5))  # 套用 GaussianBlur,設定模糊半徑為 5
output.save('output.jpg')

Python 教學 - 圖片模糊化

4、UnsharpMask

除了上述幾個模糊化的方法,也可以使用 ImageFilter.UnsharpMask 濾鏡 ( 反銳利化 ),設定效果的的半徑、效果百分比 ( percent ) 以及臨界點 ( threshold ),就能進行不同程度的銳利化效果 ( 反之就是模糊 ),如果將效果百分比設為負值,就會出現模糊效果

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

from PIL import Image, ImageFilter
img = Image.open('oxxostudio.jpg')
output = img.filter(ImageFilter.UnsharpMask(radius=5, percent=-100, threshold=3))    # 套用 UnsharpMask
output.show()

Python 教學 - 圖片模糊化

銳利化的兩種方法

1、SHARPEN

載入 Pillow 的 Image 和 ImageFilter 模組,使用 Image.open 方法開啟圖片後,就能套用 filter 的 ImageFilter.SHARPEN 濾鏡,將圖片進行基本的銳利化

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

from PIL import Image, ImageFilter
img = Image.open('oxxostudio.jpg')         # 開啟圖片
output = img.filter(ImageFilter.SHARPEN)   # 套用圖片銳利化
output.save('output.jpg')                  # 存檔
# output.show()  # Colab 不支援直接顯示,如果使用本機環境會開啟圖片檢視器

Python 教學 - 圖片銳利化

如果要讓圖片非常銳利,可以使用 for 迴圈連續套用銳利化濾鏡

相關教學參考:重複迴圈 ( for、while )

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

from PIL import Image, ImageFilter
img = Image.open('oxxostudio.jpg')
for i in range(3):
    img = img.filter(ImageFilter.SHARPEN)
img.save('output.jpg')

Python 教學 - 圖片銳利化

2、UnsharpMask

除了單純銳利化的方法,也可以使用 ImageFilter.UnsharpMask 濾鏡 ( 反銳利化 ),設定效果的的半徑、效果百分比 ( percent ) 以及臨界點 ( threshold ),就能進行不同程度的銳利化效果 ( 效果百分比設為負值,會出現模糊效果 )。

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

from PIL import Image, ImageFilter
img = Image.open('oxxostudio.jpg')
output = img.filter(ImageFilter.UnsharpMask(radius=5, percent=100, threshold=10))    # 套用 UnsharpMask
output.show()

Python 教學 - 圖片銳利化

更多 Python 教學

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


上一篇
( Day 9 ) 圖片馬賽克效果
下一篇
( Day 11 ) 讀取與修改圖片 Exif
系列文
學 Python 到底可以幹麻勒?41
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言