1 关于PIL库

1.1 PIL简略介绍

  • PIL是Python的一个图画处理库,支撑多种文件格局;
  • PIL供给强壮的图画处理和图形处理能力;
  • 可完成对图画的缩放、裁剪、叠加以及图画增加线条、图画和文字等操作。
  • 安装的话,运用以下指令:
pip install Pillow

PIL中ImageFilter模块几种图片滤波处理和运用办法

1.2 常见PIL子库或类

  • 目录在:
Python37Libsite-packagesPIL
  • 以下是PIL的常见子库或许常见的类及阐明:
类或子库 阐明
Image 最重要的模块,如创立、打开、显现、保存图画等功用,合成、裁剪、滤波等功用,获取图画特点功用,如图画直方图、通道数等
ImageChops 算术图形操作,如图画特效,图画组合,算法绘图等
ImageCrackCode 允许用户检测和测量图画的各种特性
ImageDraw 根本的图形处理功用,如可创立新图画,注释或润饰已存在图画,为web使用实时产生各种图形
ImageEnhance 图画增强
ImageFile 为图画打开和保存功用供给了相关支撑功用
ImageFileIO 从一个socket或许其他流设备中读取一张图画
ImageFilter 各种滤波器的预界说集合
ImageFont 字体
ImageGrab 将屏幕上的内容拷贝到一个PIL图画内存中
ImageOps 可完成直方图均衡、裁剪、量化、镜像等操作
ImagePath 存储和操作二维向量数据
ImageSequence 为图画序列中每一帧供给了迭代器
ImageStat 计算一张图画或许一张图画的一个区域的全局统计值
ImageTk 创立和修正BitmapImagePhotoImage目标中的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()
  • 显现作用:
    PIL中ImageFilter模块几种图片滤波处理和运用办法

2.2 浮雕作用

  • 阐明:使图画呈现出浮雕作用;
  • 办法:ImageFilter.EMBOSS
  • 示例:
# 浮雕作用
def test_emboss(self):
    self.emboss = self.img.filter(ImageFilter.EMBOSS)
    # self.emboss.show()
    self.emboss.save("image07_emboss.jpg")
  • 显现作用:
    PIL中ImageFilter模块几种图片滤波处理和运用办法

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")
  • 显现作用:
    PIL中ImageFilter模块几种图片滤波处理和运用办法

2.4 图片含糊

  • 阐明:使得处理后的图片变得含糊;
  • 办法:ImageFilter.BLUR
  • 示例:
 def test_blur(self):
        self.blur = self.img.filter(ImageFilter.BLUR)
        # self.blur.show()
        self.blur.save("image09_blur.jpg")
  • 显现作用:
    PIL中ImageFilter模块几种图片滤波处理和运用办法

2.5 细节增强

  • 阐明:使图画中细节愈加明显;
  • 办法:ImageFilter.DETAIL
  • 示例:
    def test_detail(self):
        self.detail = self.img.filter(ImageFilter.DETAIL)
        self.detail.save("image10_detail.jpg")
  • 显现作用:
    PIL中ImageFilter模块几种图片滤波处理和运用办法

2.6 不同灰度边际增强

  • 阐明:加强和改进图画中不同灰度区域之间的边界和概括;
  • 办法:ImageFilter.EDGE_ENHANCE
  • 示例:
   def test_enhance(self):
        self.enhance01 = self.img.filter(ImageFilter.EDGE_ENHANCE)
        self.enhance01.save("image11_enhance01.jpg")
  • 显现作用:
    PIL中ImageFilter模块几种图片滤波处理和运用办法

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")
  • 显现作用:
    PIL中ImageFilter模块几种图片滤波处理和运用办法

2.8 滑润处理

  • 阐明:使图画亮度平缓骤变,减小骤变梯度;
  • 办法:ImageFilter.SMOOTH
  • 示例:
  def test_smooth(self):
        self.smooth = self.img.filter(ImageFilter.SMOOTH)
        self.smooth.save("image13_smooth.jpg")
  • 显现作用:
    PIL中ImageFilter模块几种图片滤波处理和运用办法

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")
  • 显现作用:
    PIL中ImageFilter模块几种图片滤波处理和运用办法

2.10 锐化处理

  • 阐明:补偿图画的概括;
  • 办法:ImageFilter.SHARPEN
  • 示例:
   def test_sharpen(self):
        self.sharpen = self.img.filter(ImageFilter.SHARPEN)
        self.sharpen.save("image15_sharpen.jpg")
  • 显现作用:
    PIL中ImageFilter模块几种图片滤波处理和运用办法

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()