python3-PIL图像实战4

发布时间:2021-07-31 23:49:17编辑:run阅读(3038)

    使用PIL进行图片处理,PIL提供了许多图像处理的函数,使用点变换来更改像素值对图像实现几何变换

    PIL安装

    pip install pillow


    两幅图像叠加,通过将两个输入图像的像素相乘,可以将一个图像叠加到另一个图像的顶部

    from PIL import Image
    from PIL.ImageChops import add, subtract, multiply
    
    im1 = Image.open(r'D:\image_processing\jpgs\cc.jpg')
    im2 = Image.open(r'D:\image_processing\jpgs\cc_bei.jpg').convert('RGB').resize((im1.width, im1.height))
    multiply(im1, im2).show()

    image.png



    两幅图像相加,通过逐个对像素相加的方式,使用两个输入图像生成一个新的图像

    from PIL import Image
    from PIL.ImageChops import add
    
    im1 = Image.open(r'D:\image_processing\jpgs\cc.jpg')
    im2 = Image.open(r'D:\image_processing\jpgs\cc_bei.jpg').convert('RGB').resize((im1.width, im1.height))
    add(im1, im2).show()

    image.png



    计算两个图像之间的差值,图像差值可以用来检测两个图像之间的变化。

    from PIL import Image
    from PIL.ImageChops import add, subtract, multiply, difference, screen
    import matplotlib.pylab as plt
    
    # 指定默认字体
    plt.rcParams['font.sans-serif'] = ['KaiTi']
    # 解决保存图像是负号'-'显示为方块的问题
    plt.rcParams['axes.unicode_minus'] = False
    im1 = Image.open(r'D:\image_processing\jpgs\111.jpg').convert('RGB')
    im2 = Image.open(r'D:\image_processing\jpgs\222.jpg').convert('RGB')
    im = difference(im1, im2)
    im.save(r'D:\image_processing\jpgs\333.jpg')
    plt.subplot(221), plt.imshow(im1), plt.title('原图', size=20),plt.axis('off')
    plt.subplot(222), plt.imshow(im2), plt.title('缺口图', size=20),plt.axis('off')
    plt.subplot(223), plt.imshow(im), plt.title('差值图', size=20),plt.axis('off')
    plt.show()

    image.png


    减去两个图像和叠加两个图像负片,substract()函数的作用是:首先减去两个图像,然后将结果除以比例(默认是1.0),再加上偏移量(默认是0.0)

    from PIL import Image
    from PIL.ImageChops import add, subtract
    
    im1 = Image.open(r'D:\image_processing\jpgs\c.jpg')
    im2 = Image.open(r'D:\image_processing\jpgs\cc_bei.jpg').convert('RGB').resize((im1.width, im1.height))
    im3 = subtract(im1, im2, scale=1.5, offset=1).show()

    image.png


    screen()函数可用于将两个反转图像叠加在一起

    from PIL import Image
    from PIL.ImageChops import add, subtract, multiply, difference, screen
    
    im1 = Image.open(r'D:\image_processing\jpgs\c.jpg')
    im2 = Image.open(r'D:\image_processing\jpgs\cc_bei.jpg').convert('RGB').resize((im1.width, im1.height))
    im3 = screen(im1, im2).show()

    image.png

关键字