python PIL中ImageFilter模塊圖片濾波處理和使用方法
更新時(shí)間:2023年11月22日 11:46:24 作者:蟲(chóng)無(wú)涯
這篇文章主要介紹PIL中ImageFilter模塊幾種圖片濾波處理和使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
1 關(guān)于PIL庫(kù)
1.1 PIL簡(jiǎn)單介紹
PIL是Python的一個(gè)圖像處理庫(kù),支持多種文件格式;PIL提供強(qiáng)大的圖像處理和圖形處理能力;- 可完成對(duì)圖像的縮放、裁剪、疊加以及圖像添加線條、圖像和文字等操作。
- 安裝的話,使用以下命令:
pip install Pillow

1.2 常見(jiàn)PIL子庫(kù)或類(lèi)
- 目錄在:
Python37\Lib\site-packages\PIL
- 以下是
PIL的常見(jiàn)子庫(kù)或者常見(jiàn)的類(lèi)及說(shuō)明:
| 類(lèi)或子庫(kù) | 說(shuō)明 |
|---|---|
Image | 最重要的模塊,如創(chuàng)建、打開(kāi)、顯示、保存圖像等功能,合成、裁剪、濾波等功能,獲取圖像屬性功能,如圖像直方圖、通道數(shù)等 |
ImageChops | 算術(shù)圖形操作,如圖像特效,圖像組合,算法繪圖等 |
ImageCrackCode | 允許用戶檢測(cè)和測(cè)量圖像的各種特性 |
ImageDraw | 基本的圖形處理功能,如可創(chuàng)建新圖像,注釋或潤(rùn)飾已存在圖像,為web應(yīng)用實(shí)時(shí)產(chǎn)生各種圖形 |
ImageEnhance | 圖像增強(qiáng) |
ImageFile | 為圖像打開(kāi)和保存功能提供了相關(guān)支持功能 |
ImageFileIO | 從一個(gè)socket或者其他流設(shè)備中讀取一張圖像 |
ImageFilter | 各種濾波器的預(yù)定義集合 |
ImageFont | 字體庫(kù) |
ImageGrab | 將屏幕上的內(nèi)容拷貝到一個(gè)PIL圖像內(nèi)存中 |
ImageOps | 可完成直方圖均衡、裁剪、量化、鏡像等操作 |
ImagePath | 存儲(chǔ)和操作二維向量數(shù)據(jù) |
ImageSequence | 為圖像序列中每一幀提供了迭代器 |
ImageStat | 計(jì)算一張圖像或者一張圖像的一個(gè)區(qū)域的全局統(tǒng)計(jì)值 |
ImageTk | 創(chuàng)建和修改BitmapImage和PhotoImage對(duì)象中的Tkinter |
PSDraw | 為Postscript打印機(jī)提供基本的打印支持 |
2 ImageFilter模塊濾波處理
2.1 圖片輪廓
- 說(shuō)明:將圖像中的輪廓信息全部提取出來(lái);
- 方法:
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 浮雕效果
- 說(shuō)明:使圖像呈現(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 邊緣增強(qiáng)
- 說(shuō)明:會(huì)使得圖像中邊緣部分更加明顯;
- 方法:
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 圖片模糊
- 說(shuō)明:使得處理后的圖片變得模糊;
- 方法:
ImageFilter.BLUR; - 示例:
def test_blur(self):
self.blur = self.img.filter(ImageFilter.BLUR)
# self.blur.show()
self.blur.save("image09_blur.jpg")
顯示效果:

2.5 細(xì)節(jié)增強(qiáng)
- 說(shuō)明:使圖像中細(xì)節(jié)更加明顯;
- 方法:
ImageFilter.DETAIL; - 示例:
def test_detail(self):
self.detail = self.img.filter(ImageFilter.DETAIL)
self.detail.save("image10_detail.jpg")
顯示效果:

2.6 不同灰度邊緣增強(qiáng)
- 說(shuō)明:加強(qiáng)和改善圖像中不同灰度區(qū)域之間的邊界和輪廓;
- 方法:
ImageFilter.EDGE_ENHANCE; - 示例:
def test_enhance(self):
self.enhance01 = self.img.filter(ImageFilter.EDGE_ENHANCE)
self.enhance01.save("image11_enhance01.jpg")
顯示效果:

2.7 尋找邊緣信息
- 說(shuō)明:找出圖像中的邊緣信息;
- 方法:
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 平滑處理
- 說(shuō)明:使圖像亮度平緩漸變,減小突變梯度;
- 方法:
ImageFilter.SMOOTH; - 示例:
def test_smooth(self):
self.smooth = self.img.filter(ImageFilter.SMOOTH)
self.smooth.save("image13_smooth.jpg")
顯示效果:

2.9 深度平滑處理
- 說(shuō)明:使圖像更加平滑;
- 方法:
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 銳化處理
- 說(shuō)明:補(bǔ)償圖像的輪廓;
- 方法:
ImageFilter.SHARPEN; - 示例:
def test_sharpen(self):
self.sharpen = self.img.filter(ImageFilter.SHARPEN)
self.sharpen.save("image15_sharpen.jpg")
顯示效果:

3 完整源碼
# -*- coding:utf-8 -*-
# 作者:蟲(chóng)無(wú)涯
# 日期: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")
# 邊界增強(qiáng)
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")
# 細(xì)節(jié)增強(qiáng)
def test_detail(self):
self.detail = self.img.filter(ImageFilter.DETAIL)
self.detail.save("image10_detail.jpg")
# 不同灰度邊緣增強(qiáng)
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模塊圖片濾波處理和使用方法的詳細(xì)內(nèi)容,更多關(guān)于python PIL中ImageFilter模塊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python matplotlib實(shí)戰(zhàn)之漏斗圖繪制
漏斗圖,形如“漏斗”,用于展示數(shù)據(jù)的逐漸減少或過(guò)濾過(guò)程,這篇文章主要為大家介紹了如何使用Matplotlib繪制漏斗圖,需要的小伙伴可以參考下2023-08-08
python類(lèi)的私有屬性和公共屬性說(shuō)明
這篇文章主要介紹了python類(lèi)的私有屬性和公共屬性說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
Python+OpenCV實(shí)現(xiàn)圖像基本操作的示例詳解
這篇文章主要為大家詳細(xì)介紹了Python通過(guò)OpenCV實(shí)現(xiàn)圖像的一些基本處理操作的方法,文中的示例代碼簡(jiǎn)潔易懂,具有一定的參考價(jià)值,感興趣的可以學(xué)習(xí)一下2023-04-04
Python多線程應(yīng)用于自動(dòng)化測(cè)試操作示例
這篇文章主要介紹了Python多線程應(yīng)用于自動(dòng)化測(cè)試操作,結(jié)合實(shí)例形式分析了Python多線程基于Selenium進(jìn)行自動(dòng)化操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-12-12

