Pillow学习笔记二——Image

函数

Image Procession:图像处理

PIL.Image.alpha_composite(im1, im2)  #图像通道融合

im1,im2必须为“RGBA”模式图像,且size相同

 

PIL.Image.blend(im1im2alpha)  #另一种融合方式

无RGBA要求,但是,size相同

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

 

PIL.Image.composite(image1image2mask)

mask – A mask image. This image can have mode “1”, “L”, or “RGBA”, and must have the same size as the other two images.

 

PIL.Image.eval(image*args)  #用于图像point级别的运算

如下例,实现图像每个像素值×2

1 from PIL import Image
2 img1 = Image.open('liu.jpg')
3 img4 = Image.eval(img1,lambda i:i*2)
4 img4.show()

 

PIL.Image.merge(modebands)   #将多个单波段影像合成为一个多波段影像

 

Constructing images:图像构建

PIL.Image.new(modesizecolor=0)  #新建一图像 

mode见附。size数据类型为tuple,格式为:(width,height),

color默认为黑色black,如果要指定,参数传入值:对于单波段图像,应该是一个integer或floating值;对于多波段图像,应该是一个tuple。当创建一个rgb图像时,你也可以使用ImageColor module中指定的颜色字符串。如果color值为None,则新建的图像不被初始化。

What color to use for the image. Default is black. If given, this should be a single integer or floating point value for single-band modes, and a tuple for multi-band modes (one value per band). When creating RGB images, you can also use color strings as supported by the ImageColor module. If the color is None, the image is not initialised.

 

PIL.Image.fromarray(objmode=None)  

PIL.Image.frombytes(modesizedatadecoder_name='raw'*args)

PIL.Image.fromstring(*args**kw)
PIL.Image.frombuffer(modesizedatadecoder_name='raw'*args)

以上四个暂时还没有了解,大概是读取图像的方式?从内存从字符等等。等今后用到的时候再补充

 

 

Registering plugins

These functions are for use by plugin authors. Application authors can ignore them.

我选择ignore

 

The Image Class:Image类

Image.convert(mode=None, matrix=None, dither=None, palette=0, colors=256)

?不是很明白,先留着后面再查资料解决 

官方示例: 

 

rgb2xyz = (
    0.412453, 0.357580, 0.180423, 0,
    0.212671, 0.715160, 0.072169, 0,
    0.019334, 0.119193, 0.950227, 0 )
out = im.convert("RGB", rgb2xyz)

 

Image.copy()

没什么,就是复制。

 

Image.crop(box=None)

复制目标图像在box范围内的图像。

box是一个tuple,格式:(left, upper, right, lower)

 

Image.draft(modesize)

?用途不明,后面补充

 

Image.filter(filter)

滤波器,需要学习ImageFilter模块。

 

Image.getbands()

以tuple格式,返回图像的波段信息,如('R','G','B')

 

Image.getbbox()

返回图像非0区域的box值(box见Image.crop())

 

Image.getdata(band=None)

?用法不明

 

Image.getextrema()

返回每个波段的最大、最小像素值:如((0, 255), (0, 255), (0, 255))

 

Image.getpalette()

?用法不明

 

Image.getpixel(xy)

xy为一tuple,如(300,400),返回坐标处的pixel值

Image.histogram(mask=Noneextrema=None)

 

 

以list格式返回图像的直方图

 

Image.offset(xoffsetyoffset=None)

对图像进行偏移,参数为X和y方向上的偏移量

 

Image.paste(imbox=Nonemask=None)

图像粘贴

用法:如下 ,将img2粘贴到img1中去,即img1为底图。要求img2的SIZE和paste函数中的box参数SIZE相同。

 

from PIL import Image
img1 = Image.open('liu.jpg')
img2 = img1.crop((0,0,120,120))
img1.paste(img2,(100,100,220,220))
img1.show()

 

Image.point(lutmode=None)

文档读的不是很明白,不过根据实例可以结合lambda表达式有如下用法,实现每个像素×3

img2 = img1.point(lambda i:i*3)

 

附:

Modes

The mode of an image defines the type and depth of a pixel in the image. The current release supports the following standard modes:

  • 1 (1-bit pixels, black and white, stored with one pixel per byte)
  • L (8-bit pixels, black and white)
  • P (8-bit pixels, mapped to any other mode using a color palette)
  • RGB (3x8-bit pixels, true color)
  • RGBA (4x8-bit pixels, true color with transparency mask)
  • CMYK (4x8-bit pixels, color separation)
  • YCbCr (3x8-bit pixels, color video format)
    • Note that this refers to the JPEG, and not the ITU-R BT.2020, standard
  • LAB (3x8-bit pixels, the L*a*b color space)
  • HSV (3x8-bit pixels, Hue, Saturation, Value color space)
  • I (32-bit signed integer pixels)
  • F (32-bit floating point pixels)

 

 


今天遇到了我所要研究的图像的格式不被PIL识别的问题,去网上查了一下,不止我一人遇到。有人说这是因为PIL还没有支持这种格式。。>.<,心累啊。果然还是要向师兄师姐请教一下方向先比较好。。 所以 我亲爱的枕头库 先告一段落吧,日后有幸,再来拜读

 

转载于:https://www.cnblogs.com/minemine/p/6670757.html

你可能感兴趣的:(人工智能)