python PIL中ImageFilter模块图片滤波处理和使用方法
更新时间:2023年11月22日 11:46:24 作者:虫无涯
这篇文章主要介绍PIL中ImageFilter模块几种图片滤波处理和使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
1 关于PIL库
1.1 PIL简单介绍
PIL
是Python的一个图像处理库,支持多种文件格式;PIL
提供强大的图像处理和图形处理能力;- 可完成对图像的缩放、裁剪、叠加以及图像添加线条、图像和文字等操作。
- 安装的话,使用以下命令:
pip install Pillow
1.2 常见PIL子库或类
- 目录在:
Python37\Lib\site-packages\PIL
- 以下是
PIL
的常见子库或者常见的类及说明:
类或子库 | 说明 |
---|---|
Image | 最重要的模块,如创建、打开、显示、保存图像等功能,合成、裁剪、滤波等功能,获取图像属性功能,如图像直方图、通道数等 |
ImageChops | 算术图形操作,如图像特效,图像组合,算法绘图等 |
ImageCrackCode | 允许用户检测和测量图像的各种特性 |
ImageDraw | 基本的图形处理功能,如可创建新图像,注释或润饰已存在图像,为web应用实时产生各种图形 |
ImageEnhance | 图像增强 |
ImageFile | 为图像打开和保存功能提供了相关支持功能 |
ImageFileIO | 从一个socket 或者其他流设备中读取一张图像 |
ImageFilter | 各种滤波器的预定义集合 |
ImageFont | 字体库 |
ImageGrab | 将屏幕上的内容拷贝到一个PIL 图像内存中 |
ImageOps | 可完成直方图均衡、裁剪、量化、镜像等操作 |
ImagePath | 存储和操作二维向量数据 |
ImageSequence | 为图像序列中每一帧提供了迭代器 |
ImageStat | 计算一张图像或者一张图像的一个区域的全局统计值 |
ImageTk | 创建和修改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 浮雕效果
- 说明:使图像呈现出浮雕效果;
- 方法:
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 细节增强
- 说明:使图像中细节更加明显;
- 方法:
ImageFilter.DETAIL
; - 示例:
def test_detail(self): self.detail = self.img.filter(ImageFilter.DETAIL) self.detail.save("image10_detail.jpg")
显示效果:
2.6 不同灰度边缘增强
- 说明:加强和改善图像中不同灰度区域之间的边界和轮廓;
- 方法:
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 # 作用:图片效果处理 # 联系: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") # 细节增强 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模块图片滤波处理和使用方法的详细内容,更多关于python PIL中ImageFilter模块的资料请关注脚本之家其它相关文章!
相关文章
python之pyinstaller组件打包命令和异常解析实战
前段时间在制作小工具的时候,直接在命令行用pyinstaller工具打包成功后,启动exe可执行文件的时候各种报错, 今天,我们就分享一下踩坑经过,需要的朋友可以参考下2021-09-09
最新评论