目录
  1. 1. image类的属性
    1. 1.0.1. Format
    2. 1.0.2. Mode
    3. 1.0.3. size
    4. 1.0.4. New
    5. 1.0.5. Open()
    6. 1.0.6. Blend()
    7. 1.0.7. Eval()
    8. 1.0.8. Frombuffer
    9. 1.0.9. Fromstring
  2. 1.1. image类的方法
    1. 1.1.1. convert
    2. 1.1.2. copy
    3. 1.1.3. crop
    4. 1.1.4. Draft
    5. 1.1.5. Filter
    6. 1.1.6. Fromstring
    7. 1.1.7. Getbands
    8. 1.1.8. Getbbox
    9. 1.1.9. Getcolors
    10. 1.1.10. Getdata
Python图像处理库PIL的Image模块

参考博客: https://blog.csdn.net/icamera0/article/details/50654910

前置内容:Python图像处理库PIL的基本概念介绍: https://blog.csdn.net/icamera0/article/details/50647465

image类的属性

  1. Format

    定义:im.format ⇒ string or None

    含义:源文件的文件格式。如果是由PIL创建的图像,则其文件格式为None。

    例子:

    1
    2
    3
    4
    from PIL import Image
    im= Image.open("D:\\Code\\Python\\test\\img\\test.jpg")
    im.format
    'JPEG'
  2. Mode

    定义:im.mode ⇒ string

    含义:图像的模式。这个字符串表明图像所使用像素格式。该属性典型的取值为“1”,“L”,“RGB”或“CMYK”。对于图像模式的介绍,可以参考blog“Python图像处理库PIL的基本概念介绍”。

  3. size

    定义:im.size ⇒ (width, height)

    含义:图像的尺寸,按照像素数计算。它的返回值为宽度和高度的二元组(width, height)。

  4. New

    定义:Image.new(mode,size) ⇒ image

    Image.new(mode, size, color) ⇒ image

    含义:使用给定的变量mode和size生成新的图像。Size是给定的宽/高二元组,这是按照像素数来计算的。对于单通道图像,变量color只给定一个值;对于多通道图像,变量color给定一个元组(每个通道对应一个值)。在版本1.1.4及其之后,用户也可以用颜色的名称,比如给变量color赋值为“red”。如果没有对变量color赋值,图像内容将会被全部赋值为0(图像即为黑色)。如果变量color是空,图像将不会被初始化,即图像的内容全为0。这对向该图像复制或绘制某些内容是有用的。

    例子:

    1
    2
    3
    4
    5
    >>>from PIL import Image

    >>> im= Image.new("RGB", (128, 128), "#FF0000")

    >>>im.show()

    图像im为128x128大小的红色图像

  5. Open()

    定义:Image.open(file) ⇒ image

    Image.open(file, mode) ⇒ image

    含义:打开并确认给定的图像文件。这个是一个懒操作;该函数只会读文件头,而真实的图像数据直到试图处理该数据才会从文件读取(调用load()方法将强行加载图像数据)。如果变量mode被设置,那必须是“r”。

    1
    2
    <class 'PIL.Image.Image'>
    <PIL.Image.Image image mode=RGB size=224x224 at 0x241D78DB438>

用户可以使用一个字符串(表示文件名称的字符串)或者文件对象作为变量file的值。文件对象必须实现read(),seek()和tell()方法,并且以二进制模式打开。

  1. Blend()

    定义:Image.blend(image1,image2, alpha) ⇒ image

    含义:使用给定的两张图像及透明度变量alpha,插值出一张新的图像。这两张图像必须有一样的尺寸和模式。

    合成公式为:out = image1 *(1.0 - alpha) + image2 * alpha

    如果变量alpha为0.0,将返回第一张图像的拷贝。如果变量alpha为1.0,将返回第二张图像的拷贝。对变量alpha的值没有限制

  2. Eval()

    定义:Image.eval(image,function) ⇒ image

    含义:使用变量function对应的函数(该函数应该有一个参数)处理变量image所代表图像中的每一个像素点。如果变量image所代表图像有多个通道,那变量function对应的函数作用于每一个通道。注意:变量function对每个像素只处理一次,所以不能使用随机组件和其他生成器

    1
    2
    3
    4
    5
    6
    7
    >>>from PIL import Image
    >>>im01 = Image.open("D:\\Code\\Python\\test\\img\\test01.jpg")
    >>> deffun(x):
             return x * 0.5
    >>>im_eval = Image.eval(im01, fun)
    >>>im_eval.show()
    >>>im01.show(
  1. Frombuffer

    定义:Image.frombuffer(mode,size, data) ⇒ image

    Image.frombuffer(mode, size,data, decoder, parameters) ⇒ image

    含义:(New in PIL 1.1.4)使用标准的“raw”解码器,从字符串或者buffer对象中的像素数据产生一个图像存储。对于一些模式,这个图像存储与原始的buffer(这意味着对原始buffer对象的改变体现在图像本身)共享内存。并非所有的模式都可以共享内存;支持的模式有“L”,“RGBX”,“RGBA”和“CMYK”。对于其他模式,这个函数与fromstring()函数一致。

  2. Fromstring

    定义:Image.fromstring(mode,size, data) ⇒ image

    Image.fromstring(mode, size,data, decoder, parameters) ⇒ image

    含义:函数Image.fromstring(mode,size, data),使用标准的“raw”解码器,从字符串中的像素数据产生一个图像存储。

    函数Image.fromstring(mode,size, data, decoder, parameters)也一样,但是允许用户使用PIL支持的任何像素解码器。更多信息可以参考:Writing YourOwn File Decoder.

    注意:这个函数只对像素数据进行解码,而不是整个图像。如果用户的字符串包含整个图像,可以将该字符串包裹在StringIO对象中,使用函数open()来加载

image类的方法

  1. convert

    定义1:im.convert(mode)⇒ image

    含义1:将当前图像转换为其他模式,并且返回新的图像。

    当从一个调色板图像转换时,这个方法通过这个调色板来转换像素。如果不对变量mode赋值,该方法将会选择一种模式,在没有调色板的情况下,使得图像和调色板中的所有信息都可以被表示出来。

  2. copy

    定义:im.copy() ⇒ image

    含义:拷贝这个图像。如果用户想粘贴一些数据到这张图,可以使用这个方法,但是原始图像不会受到影响。

  3. crop

    定义:im.crop(box) ⇒ image

    含义:从当前的图像中返回一个矩形区域的拷贝。变量box是一个四元组,定义了左、上、右和下的像素坐标。

  4. Draft

    定义:im.draft(mode,size)

    含义:配置图像文件加载器,使得返回一个与给定的模式和尺寸尽可能匹配的图像的版本。例如,用户可以使用这个方法,在加载一个彩色JPEG图像时将其转换为灰色图像,或者从一个PCD文件中提取一个128x192的版本。

    注意:这个方法会适时地修改图像对象(精确地说,它会重新配置文件的读取器)。如果图像已经被加载,那这个方法就没有作用了

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    >>>from PIL import Image

    >>> im01 =Image.open("D:\\Code\\Python\\test\\img\\test01.jpg")

    >>>im01.size

    (1024, 768)

    >>> im01.mode

    'RGB'

    >>>im01.draft("L", (100,100))

    <PIL.JpegImagePlugin.JpegImageFileimage mode=L size=128x96 at 0x3B69230>

    >>>im01.size

    (128, 96)

    >>>im01.mode

    'L
  1. Filter

    定义:im.filter(filter) ⇒ image

    含义:返回一个使用给定滤波器处理过的图像的拷贝。可用滤波器需要参考ImageFilter模块

  2. Fromstring

    定义:im.fromstring(data)

    im.fromstring(data, decoder,parameters)

    含义:与函数fromstring()一样,但是这个方法会将data加载到当前的图像中。

  1. Getbands

    定义:im.getbands()⇒ tuple of strings

    含义:返回包括每个通道名称的元组。例如,对于RGB图像将返回(“R”,“G”,“B”)。

    例子:

    1
    2
    3
    4
    5
    6
    7
    >>>from PIL import Image

    >>> im01 =Image.open("D:\\Code\\Python\\test\\img\\test01.jpg")

    >>>im01.getbands()

    ​ ('R', 'G', 'B')
  2. Getbbox

    定义:im.getbbox() ⇒ 4-tuple or None

    含义:计算图像非零区域的包围盒。这个包围盒是一个4元组,定义了左、上、右和下像素坐标。如果图像是空的,这个方法将返回空。

    例子:

    1
    2
    3
    4
    5
    >>>from PIL import Image

    >>>im01 = Image.open("D:\\Code\\Python\\test\\img\\test01.jpg")

    >>>im01.getbbox()

    (0, 0, 1024,768)

  3. Getcolors

    定义:im.getcolors() ⇒ a list of(count, color) tuples or None

    im.getcolors(maxcolors) ⇒ a list of (count, color) tuples or None

    含义:(New in 1.1.5)返回一个(count,color)元组的无序list,其中count是对应颜色在图像中出现的次数。

    如果变量maxcolors的值被超过,该方法将停止计算并返回空。变量maxcolors默认值为256。为了保证用户可以获取图像中的所有颜色,you can pass in size[0]*size[1](请确保有足够的内存做这件事)。

  4. Getdata

    定义:im.getdata() ⇒ sequence

    含义:以包含像素值的sequence对象形式返回图像的内容。这个sequence对象是扁平的,以便第一行的值直接跟在第零行的值后面,等等。

    注意:这个方法返回的sequence对象是PIL内部数据类型,它只支持某些sequence操作,包括迭代和基础sequence访问。使用list(im.getdata()),将它转换为普通的sequence。

例子:

1
>>>from PIL import Image

im01 =Image.open(“D:\Code\Python\test\img\test01.jpg”)

seq= im01.getdata()

seq0 = list(seq)

seq[0]

(11, 113, 198)

seq[2]

(9, 111, 196)

seq0[0]

(11, 113, 198)

seq0[2]

(9, 111, 196)

Sequence对象的每一个元素对应一个像素点的R、G和B三个值。

1
2
3
4
5
6
7
8
9
```

11. ### Getextrema

定义:im.getextrema() ⇒ 2-tuple

含义:返回一个2元组,包括该图像中的最小和最大值。

例子:

>>>from PIL import Image

>>>im01 = Image.open("D:\\Code\\Python\\test\\img\\test01.jpg")

>>>im01.getextrema()
1
2
3
4
5
6
7
8
9
10
11
12

((0, 255), (0,255), (0, 255))

该方法返回了R/G/B三个通道的最小和最大值的2元组。

12. ### Getpixel

定义:im.getpixel(xy) ⇒ value or tuple

含义:返回给定位置的像素值。如果图像为多通道,则返回一个元组。

注意:该方法执行比较慢;如果用户需要使用python处理图像中较大部分数据,可以使用像素访问对象(见load),或者方法getdata()
>>>im01.getpixel((1,1)) (10, 112, 197) >>>r,g,b = im01.split() >>>r.getpixel((0,0)) 11 ```
文章作者: HazardFY
文章链接: http://hazardfy.github.io/2019/11/16/Python图像处理库PIL的Image模块/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HazardFY's BLOG
打赏
  • 微信
  • 支付寶