阅读(4512) (0)

Pillow ImageFilter模块

2021-07-14 10:39:00 更新
ImageFilter模块包含一组预定义过滤器的定义,可与该Image.filter()方法一起使用。

示例:过滤图像

from PIL import ImageFilter

im1 = im.filter(ImageFilter.BLUR)

im2 = im.filter(ImageFilter.MinFilter(3))
im3 = im.filter(ImageFilter.MinFilter)  # same as MinFilter(3)

过滤器

库的当前版本提供了以下一组预定义的图像增强过滤器:

  • BLUR
  • CONTOUR
  • DETAIL
  • EDGE_ENHANCE
  • EDGE_ENHANCE_MORE
  • EMBOSS
  • FIND_EDGES
  • SHARPEN
  • SMOOTH
  • SMOOTH_MORE​classPIL.ImageFilter.Color3DLUT(sizetablechannels=3target_mode=None**kwargs)

三维颜色查找表。

使用通道的值作为三维查找表中的坐标转换3通道像素,并插入最近的元素。

此方法允许您使用预先计算的抽取表在恒定时间内应用几乎任何颜色转换。

5.2.0 新版功能。

参数
  • size -- 表的大小。一个int或(int,int,int)的元组。任何维度的最小尺寸为2,最大尺寸为65。

  • table -- 平面查找表。一览表 channels * size**3 浮动元素或 size**3 通道大小的浮点数元组。首先改变通道,然后是第一个维度,然后是第二个维度,然后是第三个维度。值0.0对应输出的最小值,1.0最高。

  • channels -- 表中的通道数。可能是3或4。默认值为3。

  • target_mode -- 结果图像的模式。应该有不少于 channels 渠道。默认是 None 也就是说模式不会改变。

classmethodgenerate(sizecallbackchannels=3target_mode=None)

使用提供的回调生成新的LUT。

参数
  • size -- 桌子的大小。传递给构造函数。

  • callback -- 三个参数对应三个颜色通道的功能。将被调用 size**3 值在0.0到1.0之间的时间,应返回一个具有 channels 元素的元组。

  • channels -- 应返回回调的通道数。

  • target_mode -- 传递给结果查找表的构造函数。

transform(callbackwith_normals=Falsechannels=Nonetarget_mode=None)

使用提供的回调转换表值,并返回具有更改值的新LUT。

参数
  • callback -- 获取旧查阅表格值并返回一组新值的函数。函数应采用的参数个数为 self.channels 或 3 + self.channels 如果 with_normals 已设置标志。应返回的元组 self.channels 或 channels 元素(如果已设置)。

  • with_normals -- 如果值为​True​, callback 将以颜色多维数据集中的坐标作为前三个参数调用。否则, callback 将仅使用实际颜色值调用。

  • channels -- 结果查找表中的通道数。

  • target_mode -- 传递给结果查找表的构造函数。

classPIL.ImageFilter.BoxBlur(radius)

通过将每个像素设置为每个方向延伸半径像素的方形框中像素的平均值来模糊图像。支持任意大小的浮动半径。使用一个优化的实现,该实现相对于任何半径值的图像大小以线性时间运行。

参数

radius -- 一个方向上的框的大小。半径0不模糊,返回相同的图像。半径1在每个方向上取1个像素,即总共9个像素。

classPIL.ImageFilter.GaussianBlur(radius=2)

高斯模糊滤波器。

参数

radius -- 模糊半径。

classPIL.ImageFilter.UnsharpMask(radius=2percent=150threshold=3)

取消锐化屏蔽滤波器。

参数

  • radius -- 模糊半径

  • percent -- 不清晰度强度,百分比

  • threshold -- 阈值控制将锐化的最小亮度变化

classPIL.ImageFilter.Kernel(sizekernelscale=Noneoffset=0)

创建卷积内核。当前版本只支持3x3和5x5整数和浮点内核。

在当前版本中,内核只能应用于“l”和“rgb”图像。

参数
  • size -- 内核大小,表示为(宽度、高度)。在当前版本中,必须是(3,3)或(5,5)。

  • kernel -- 包含核权的序列。

  • scale -- 比例因子如果给定,则每个像素的结果除以该值。默认值是内核权重的总和。

  • offset -- 抵消。如果给定,该值将在除以比例因子后添加到结果中。

classPIL.ImageFilter.RankFilter(sizerank)

创建等级筛选器。等级过滤器对给定大小的窗口中的所有像素排序,并返回 第​rank ​个值。

参数
  • size -- 内核大小,以像素为单位。

  • rank -- 要选取的像素值。使用0作为最小过滤器, size * size / 2 对于中值滤波器, size * size - 1 对于最大滤波器等。

classPIL.ImageFilter.MedianFilter(size=3)

创建中值过滤器。选取具有给定大小的窗口中的中值像素值。

参数

size -- 内核大小,以像素为单位。

classPIL.ImageFilter.MinFilter(size=3)

创建最小筛选器。选取具有给定大小的窗口中的最低像素值。

参数

size -- 内核大小,以像素为单位。

classPIL.ImageFilter.MaxFilter(size=3)

创建最大筛选器。选取窗口中具有给定大小的最大像素值。

参数

size -- 内核大小,以像素为单位。

classPIL.ImageFilter.ModeFilter(size=3)

创建模式筛选器。选取具有给定大小的框中最频繁的像素值。只出现一次或两次的像素值将被忽略;如果没有超过两次的像素值出现,则保留原始像素值。

参数

size -- 内核大小,以像素为单位。

classPIL.ImageFilter.Filter

用于过滤图像的抽象mixin(用于​ filter() ​)

实施者必须提供以下方法:

filter(selfimage)

对单个波段图像或图像的单个波段应用过滤器。

返回

图像的过滤副本。

classPIL.ImageFilter.MultibandFilter

用于过滤多波段图像的抽象mixin(用于 ​filter() ​)

实施者必须提供以下方法:

filter(selfimage)

对多波段图像应用过滤器。

返回

图像的过滤副本。