PIL全称是Python Image Library,顾名思义,是用来做图像处理的。
我们可以用PIL干嘛呢?
第一,可以将两张图片合并在一起
Image.blend(image1,image2,alpha)
合成公式为:out=image1(1.0- alpha) image2alpha
代码语言:javascript复制from PIL import Image
im1 = Image.open("1.jpg")
im2 = Image.open("2.jpg")
print(im1.mode,im1.size) # RGB (500, 300)
print(im2.mode,im2.size) # RGB (500, 300)
im = Image.blend(im1, im2, 0.5)
im.save('3.jpg')
这是1.jpg
这是2.jpg
这是3.jpg
合成后的图片
Composite
当然除了上面的方法还可以使用Composite类 Image.composite(image1,image2, mask) ⇒ image 复合类使用给定的两张图像及mask图像作为透明度,插值出一张新的图像。变量mask图像的模式可以为“1”,“L”或者“RGBA”。所有图像必须有相同的尺寸。
看一波源码,如下图所示
一波代码开干
代码语言:javascript复制from PIL import Image
im1 = Image.open("1.jpg")
im2 = Image.open("2.jpg")
r,g,b = im1.split()
print(b.mode)
print(im1.mode,im1.size)
print(im2.mode,im2.size)
im = Image.composite(im1,im2,mask=b)
im.save('4.jpg')
这是4.jpg
Filter类
im.filter(filter) ⇒ image
返回一个使用给定滤波器处理过的图像的拷贝。在该模块中,预先定义了很多增强滤波器,可以通过filter()函数使用,预定义滤波器包括:
- BLUR
- CONTOUR
- DETAIL
- EDGE_ENHANCE
- EDGE_ENHANCE_MORE
- EMBOSS
- FIND_EDGES
- SMOOTH
再看一波源码,如下图所示
一波代码开干
代码语言:javascript复制from PIL import Image
from PIL import ImageFilter ## 调取ImageFilter
img = Image.open("1.jpg")
blu = img.filter(ImageFilter.BLUR) ##均值滤波
con = img.filter(ImageFilter.CONTOUR) ##找轮廓
edge = img.filter(ImageFilter.FIND_EDGES) ##边缘检测
blu.save('均值滤波.jpg')
con.save('找轮廓.jpg')
edge.save('边缘检测.jpg')
这是均值滤波.jpg
这是找轮廓.jpg
这是边缘检测.jpg