python image.new(rgb)_python3中PIL库中Image.new方法和paste方法

python2中提供了PIL基础的图像数据出来模块,在python3中更名为了pillow模块,名字虽然发生了改变,但是提供的方法和功能都是一样的,对于日常基础的图像数据处理分析来说是足够用了的。

Image.new

Image.new()方法,顾名思义,是用来new一个新的图像,具体参数如下:

Image.new(mode, size, color=0)

mode:模式,通常用"RGB"这种模式,如果需要采用其他格式,可以参考博文:PIL的mode参数

size:生成的图像大小

color:生成图像的颜色,默认为0,即黑色。

举个栗子:

from PIL import Image

import matplotlib.pyplot as plt

img = Image.new("RGB",(32,32),(255,255,255))

plt.imshow(img)

生成的图片如下:

另外,颜色参数的输入还可以用英文单词表示,或者十六进制的颜色码:

img_red = Image.new("RGB",(32,32),"red")

img_green = Image.new("RGB",(32,32),"#00FF00")

plt.subplot(1,2,1)

plt.imshow(img_red)

plt.subplot(1,2,2)

plt.imshow(img_green)

plt.show()

paste方法

paste,中文就是粘贴的意思,所以该方法就是将paste方法中,传入的图像粘贴在原图像上。

img.paste(im, box=None, mask=None)

定义1:im.paste(image,box)

含义1:将一张图粘贴到另一张图像上。变量box或者是一个给定左上角的2元组,或者是定义了左,上,右和下像素坐标的4元组,或者为空(与(0,0)一样)。如果给定4元组,被粘贴的图像的尺寸必须与区域尺寸一样。

如果模式不匹配,被粘贴的图像将被转换为当前图像的模式。

举个栗子:

from PIL import Image

import matplotlib.pyplot as plt

img = Image.new("RGB",(100,100))

img_small = Image.new("RGB",(20,20),"red")

img.paste(img_small,(20,20))

plt.imshow(img)

plt.show()

这里的

img.paste(img_small,(20,20))

相当于

img.paste(img_small,(20,20,40,40))

将红色的图,粘贴到了黑色图(20,20,40,40)位置

定义2:im.paste(color,box)

含义2:它与定义1一样,但是它使用同一种颜色填充变量box对应的区域。对于单通道图像,变量colour为单个颜色值;对于多通道,则为一个元组。

栗子2:

img = Image.new("RGB",(100,100))

img.paste("red",(10,10,30,30))

plt.imshow(img)

plt.show()

注:

对于多通道的图像,如果变量color只给定一个数值,将只会应用于图像的第一个通道。如果是“RGB”模式的图像,将应用于红色通道。

这里的坐标不能简写,必须写全,不然程序只知道paste图像右上角的位置,而不知道范围。

定义3:im.paste(image,box, mask)

含义3:与定义1一样,但是它使用变量mask对应的模板图像来填充所对应的区域。可以使用模式为“1”、“L”或者“RGBA”的图像作为模板图像。模板图像的尺寸必须与变量image对应的图像尺寸一致。 如果变量mask对应图像的值为255,则模板图像的值直接被拷贝过来;如果变量mask对应图像的值为0,则保持当前图像的原始值。变量mask对应图像的其他值,将对两张图像的值进行透明融合。

注意:如果变量image对应的为“RGBA”图像,即粘贴的图像模式为“RGBA”,则alpha通道被忽略。用户可以使用同样的图像作为原图像和模板图像。

栗子3:

img = Image.new("RGB",(100,100))

img_mask = Image.new('1',(20,20))

img_mask.paste("white",(10,10,15,15))

img_small = Image.new("RGB",(20,20),"red")

img.paste(img_small,(30,30),img_mask)

plt.imshow(img)

plt.show()

mask图像为:

注:mask掩膜,即提取感兴趣区域进行处理,mask图像需要和被粘贴的图像大小相同,mask图像中黑色的部分会保留原数据,白色部分为感兴趣区域,会把被paste图像的对应区域的数据paste到目标图像上。

换句话说,利用mask,首先将被paste图像先与mask图像“相乘”,规定0为黑色,1为白色,再将“乘积”paste到目标图像上。

如上图,原本被paste的图像大小是20*20的,利用mask后,只有原被粘贴图像上(10,10,15,15)范围的元素被paste到目标图像上。

定义4:im.paste(colour,box, mask)

含义4:与定义3一样,只是使用变量colour对应的单色来填充区域。

栗子4:

img = Image.new("RGB",(100,100))

img_mask = Image.new('1',(20,20))

img_mask.paste("white",(10,10,15,15))

img.paste("blue",(30,30),img_mask)

plt.imshow(img)

plt.show()

你可能感兴趣的:(python,image.new(rgb))