美文网首页
自从我会了Python中的PIL,发现了其实超级简单

自从我会了Python中的PIL,发现了其实超级简单

作者: b8a7c7695f14 | 来源:发表于2020-04-08 11:15 被阅读0次

    PIL全称是Python Image Library,顾名思义,是用来做图像处理的。

    我们可以用PIL干嘛呢?

    第一,可以将两张图片合并在一起

    Image.blend(image1,image2,alpha)

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

    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

    image

    这是2.jpg

    image

    这是3.jpg

    合成后的图片

    Composite

    当然除了上面的方法还可以使用Composite类
    Image.composite(image1,image2, mask) ⇒ image
    复合类使用给定的两张图像及mask图像作为透明度,插值出一张新的图像。变量mask图像的模式可以为“1”,“L”或者“RGBA”。所有图像必须有相同的尺寸。

    看一波源码,如下图所示

    image

    一波代码开干

    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

    image

    Filter类

    im.filter(filter) ⇒ image

    返回一个使用给定滤波器处理过的图像的拷贝。在该模块中,预先定义了很多增强滤波器,可以通过filter()函数使用,预定义滤波器包括:

    • BLUR
    • CONTOUR
    • DETAIL
    • EDGE_ENHANCE
    • EDGE_ENHANCE_MORE
    • EMBOSS
    • FIND_EDGES
    • SMOOTH

    再看一波源码,如下图所示

    image

    一波代码开干

    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

    image

    这是找轮廓.jpg

    image

    这是边缘检测.jpg

    image

    相关文章

      网友评论

          本文标题:自从我会了Python中的PIL,发现了其实超级简单

          本文链接:https://www.haomeiwen.com/subject/vdwzphtx.html