python PIL中ImageFilter模塊圖片濾波處理和使用方法
更新時間:2023年11月22日 11:46:24 作者:蟲無涯
這篇文章主要介紹PIL中ImageFilter模塊幾種圖片濾波處理和使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
1 關(guān)于PIL庫
1.1 PIL簡單介紹
PIL
是Python的一個圖像處理庫,支持多種文件格式;PIL
提供強大的圖像處理和圖形處理能力;- 可完成對圖像的縮放、裁剪、疊加以及圖像添加線條、圖像和文字等操作。
- 安裝的話,使用以下命令:
pip install Pillow
1.2 常見PIL子庫或類
- 目錄在:
Python37\Lib\site-packages\PIL
- 以下是
PIL
的常見子庫或者常見的類及說明:
類或子庫 | 說明 |
---|---|
Image | 最重要的模塊,如創(chuàng)建、打開、顯示、保存圖像等功能,合成、裁剪、濾波等功能,獲取圖像屬性功能,如圖像直方圖、通道數(shù)等 |
ImageChops | 算術(shù)圖形操作,如圖像特效,圖像組合,算法繪圖等 |
ImageCrackCode | 允許用戶檢測和測量圖像的各種特性 |
ImageDraw | 基本的圖形處理功能,如可創(chuàng)建新圖像,注釋或潤飾已存在圖像,為web應(yīng)用實時產(chǎn)生各種圖形 |
ImageEnhance | 圖像增強 |
ImageFile | 為圖像打開和保存功能提供了相關(guān)支持功能 |
ImageFileIO | 從一個socket 或者其他流設(shè)備中讀取一張圖像 |
ImageFilter | 各種濾波器的預定義集合 |
ImageFont | 字體庫 |
ImageGrab | 將屏幕上的內(nèi)容拷貝到一個PIL 圖像內(nèi)存中 |
ImageOps | 可完成直方圖均衡、裁剪、量化、鏡像等操作 |
ImagePath | 存儲和操作二維向量數(shù)據(jù) |
ImageSequence | 為圖像序列中每一幀提供了迭代器 |
ImageStat | 計算一張圖像或者一張圖像的一個區(qū)域的全局統(tǒng)計值 |
ImageTk | 創(chuàng)建和修改BitmapImage 和PhotoImage 對象中的Tkinter |
PSDraw | 為Postscript 打印機提供基本的打印支持 |
2 ImageFilter模塊濾波處理
2.1 圖片輪廓
- 說明:將圖像中的輪廓信息全部提取出來;
- 方法:
ImageFilter.CONTOUR
; - 示例:
from PIL import Image, ImageFilter class TestImage(): def __init__(self): super(TestImage, self).__init__() self.img = Image.open("./image06.jpg") # self.img.show() # 圖片輪廓 def test_contur(self): self.contur = self.img.filter(ImageFilter.CONTOUR) # self.contur.show() self.contur.save("image06_contur.jpg") if __name__ == "__main__": image = TestImage() image.test_contur()
顯示效果:
2.2 浮雕效果
- 說明:使圖像呈現(xiàn)出浮雕效果;
- 方法:
ImageFilter.EMBOSS
; - 示例:
# 浮雕效果 def test_emboss(self): self.emboss = self.img.filter(ImageFilter.EMBOSS) # self.emboss.show() self.emboss.save("image07_emboss.jpg")
顯示效果:
2.3 邊緣增強
- 說明:會使得圖像中邊緣部分更加明顯;
- 方法:
ImageFilter.EDGE_ENHANCE_MORE
; - 示例:
def test_enhance_m(self): self.enhance = self.img.filter(ImageFilter.EDGE_ENHANCE_MORE) # self.enhance.show() self.enhance.save("image08_enhance.jpg")
顯示效果:
2.4 圖片模糊
- 說明:使得處理后的圖片變得模糊;
- 方法:
ImageFilter.BLUR
; - 示例:
def test_blur(self): self.blur = self.img.filter(ImageFilter.BLUR) # self.blur.show() self.blur.save("image09_blur.jpg")
顯示效果:
2.5 細節(jié)增強
- 說明:使圖像中細節(jié)更加明顯;
- 方法:
ImageFilter.DETAIL
; - 示例:
def test_detail(self): self.detail = self.img.filter(ImageFilter.DETAIL) self.detail.save("image10_detail.jpg")
顯示效果:
2.6 不同灰度邊緣增強
- 說明:加強和改善圖像中不同灰度區(qū)域之間的邊界和輪廓;
- 方法:
ImageFilter.EDGE_ENHANCE
; - 示例:
def test_enhance(self): self.enhance01 = self.img.filter(ImageFilter.EDGE_ENHANCE) self.enhance01.save("image11_enhance01.jpg")
顯示效果:
2.7 尋找邊緣信息
- 說明:找出圖像中的邊緣信息;
- 方法:
ImageFilter.FIND_EDGES
; - 示例:
def test_find_edges(self): self.find_edges = self.img.filter(ImageFilter.FIND_EDGES) self.find_edges.save("image12_find_edges.jpg")
顯示效果:
2.8 平滑處理
- 說明:使圖像亮度平緩漸變,減小突變梯度;
- 方法:
ImageFilter.SMOOTH
; - 示例:
def test_smooth(self): self.smooth = self.img.filter(ImageFilter.SMOOTH) self.smooth.save("image13_smooth.jpg")
顯示效果:
2.9 深度平滑處理
- 說明:使圖像更加平滑;
- 方法:
ImageFilter.SMOOTH_MORE
; - 示例:
def test_smooth_m(self): self.smooth_m = self.img.filter(ImageFilter.SMOOTH_MORE) self.smooth_m.save("image14_smooth_m.jpg")
顯示效果:
2.10 銳化處理
- 說明:補償圖像的輪廓;
- 方法:
ImageFilter.SHARPEN
; - 示例:
def test_sharpen(self): self.sharpen = self.img.filter(ImageFilter.SHARPEN) self.sharpen.save("image15_sharpen.jpg")
顯示效果:
3 完整源碼
# -*- coding:utf-8 -*- # 作者:蟲無涯 # 日期:2023/11/20 # 文件名稱:test_pil.py # 作用:圖片效果處理 # 聯(lián)系:VX(NoamaNelson) # 博客:https://blog.csdn.net/NoamaNelson from PIL import Image, ImageFilter class TestImage(): def __init__(self): super(TestImage, self).__init__() self.img = Image.open("./image06.jpg") # self.img.show() # 圖片輪廓 def test_contur(self): self.contur = self.img.filter(ImageFilter.CONTOUR) # self.contur.show() self.contur.save("image06_contur.jpg") # 浮雕效果 def test_emboss(self): self.emboss = self.img.filter(ImageFilter.EMBOSS) # self.emboss.show() self.emboss.save("image07_emboss.jpg") # 邊界增強 def test_enhance_m(self): self.enhance = self.img.filter(ImageFilter.EDGE_ENHANCE_MORE) # self.enhance.show() self.enhance.save("image08_enhance.jpg") # 圖片模糊 def test_blur(self): self.blur = self.img.filter(ImageFilter.BLUR) # self.blur.show() self.blur.save("image09_blur.jpg") # 細節(jié)增強 def test_detail(self): self.detail = self.img.filter(ImageFilter.DETAIL) self.detail.save("image10_detail.jpg") # 不同灰度邊緣增強 def test_enhance(self): self.enhance01 = self.img.filter(ImageFilter.EDGE_ENHANCE) self.enhance01.save("image11_enhance01.jpg") # 找出圖像中的邊緣信息 def test_find_edges(self): self.find_edges = self.img.filter(ImageFilter.FIND_EDGES) self.find_edges.save("image12_find_edges.jpg") # 平滑處理 def test_smooth(self): self.smooth = self.img.filter(ImageFilter.SMOOTH) self.smooth.save("image13_smooth.jpg") # 深度平滑處理 def test_smooth_m(self): self.smooth_m = self.img.filter(ImageFilter.SMOOTH_MORE) self.smooth_m.save("image14_smooth_m.jpg") # 銳化處理 def test_sharpen(self): self.sharpen = self.img.filter(ImageFilter.SHARPEN) self.sharpen.save("image15_sharpen.jpg") if __name__ == "__main__": image = TestImage() # image.test_contur() # image.test_emboss() # image.test_enhance_m() # image.test_blur() # image.test_detail() # image.test_find_edges() # image.test_smooth() # image.test_smooth_m() image.test_sharpen()
以上就是python PIL中ImageFilter模塊圖片濾波處理和使用方法的詳細內(nèi)容,更多關(guān)于python PIL中ImageFilter模塊的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python 3.5實現(xiàn)檢測路由器流量并寫入txt的方法實例
這篇文章主要給大家介紹了關(guān)于利用python 3.5實現(xiàn)檢測路由器流量并寫入txt的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起看看吧。2017-12-12利用python、tensorflow、opencv、pyqt5實現(xiàn)人臉實時簽到系統(tǒng)
這篇文章主要介紹了利用python、tensorflow、opencv、pyqt5實現(xiàn)人臉實時簽到系統(tǒng),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09pycharm安裝教程(下載安裝以及設(shè)置中文界面)
這篇文章主要給大家介紹了關(guān)于pycharm安裝教程,文中包括下載安裝以及設(shè)置中文界面,PyCharm是一款Python IDE,其帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具,需要的朋友可以參考下2023-10-10