python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python PIL中ImageFilter模块

python PIL中ImageFilter模块图片滤波处理和使用方法

作者:虫无涯

这篇文章主要介绍PIL中ImageFilter模块几种图片滤波处理和使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1 关于PIL库

1.1 PIL简单介绍

pip install Pillow

1.2 常见PIL子库或类

Python37\Lib\site-packages\PIL
类或子库说明
Image最重要的模块,如创建、打开、显示、保存图像等功能,合成、裁剪、滤波等功能,获取图像属性功能,如图像直方图、通道数等
ImageChops算术图形操作,如图像特效,图像组合,算法绘图等
ImageCrackCode允许用户检测和测量图像的各种特性
ImageDraw基本的图形处理功能,如可创建新图像,注释或润饰已存在图像,为web应用实时产生各种图形
ImageEnhance图像增强
ImageFile为图像打开和保存功能提供了相关支持功能
ImageFileIO从一个socket或者其他流设备中读取一张图像
ImageFilter各种滤波器的预定义集合
ImageFont字体库
ImageGrab将屏幕上的内容拷贝到一个PIL图像内存中
ImageOps可完成直方图均衡、裁剪、量化、镜像等操作
ImagePath存储和操作二维向量数据
ImageSequence为图像序列中每一帧提供了迭代器
ImageStat计算一张图像或者一张图像的一个区域的全局统计值
ImageTk创建和修改BitmapImagePhotoImage对象中的Tkinter
PSDrawPostscript打印机提供基本的打印支持

2 ImageFilter模块滤波处理

2.1 图片轮廓

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 浮雕效果

# 浮雕效果
def test_emboss(self):
    self.emboss = self.img.filter(ImageFilter.EMBOSS)
    # self.emboss.show()
    self.emboss.save("image07_emboss.jpg")

显示效果:

2.3 边缘增强

 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 图片模糊

 def test_blur(self):
        self.blur = self.img.filter(ImageFilter.BLUR)
        # self.blur.show()
        self.blur.save("image09_blur.jpg")

显示效果:

2.5 细节增强

    def test_detail(self):
        self.detail = self.img.filter(ImageFilter.DETAIL)
        self.detail.save("image10_detail.jpg")

显示效果:

2.6 不同灰度边缘增强

   def test_enhance(self):
        self.enhance01 = self.img.filter(ImageFilter.EDGE_ENHANCE)
        self.enhance01.save("image11_enhance01.jpg")

显示效果:

2.7 寻找边缘信息

    def test_find_edges(self):
        self.find_edges = self.img.filter(ImageFilter.FIND_EDGES)
        self.find_edges.save("image12_find_edges.jpg")

显示效果:

2.8 平滑处理

  def test_smooth(self):
        self.smooth = self.img.filter(ImageFilter.SMOOTH)
        self.smooth.save("image13_smooth.jpg")

显示效果:

2.9 深度平滑处理

   def test_smooth_m(self):
        self.smooth_m = self.img.filter(ImageFilter.SMOOTH_MORE)
        self.smooth_m.save("image14_smooth_m.jpg")

显示效果:

2.10 锐化处理

   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模块的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文