python3-PIL图像实战1

发布时间:2021-07-29 00:05:08编辑:run阅读(313)

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

    PIL模块安装

    pip install pillow


    图像裁剪,可以使用带有所需矩形参数的crop()函数从图像中裁剪相应的区域.

    原图效果:

    image.png

    裁剪code

    from PIL import Image
    
    im = Image.open(r'D:\image_processing\jpgs\ss.jpg')
    im_c = im.crop((80,30,230,160))
    im_c.show()

    image.png


    调整图像尺寸,为了增大或缩小图像的尺寸,可以使用resize()函数,该函数可在内部分别对图像进行上采样或下采样,调整为较大的图像,以上面的裁剪图为例:

    from PIL import Image
    
    im = Image.open(r'D:\image_processing\jpgs\ss_1.jpg')
    im_large = im.resize((im.width*2, im.height*2), Image.ANTIALIAS)
    im_large.show()

    image.png

    放大了2倍.

    这个函数img.resize((width, height),Image.ANTIALIAS)
    第二个参数:
    Image.NEAREST :低质量
    Image.BILINEAR:双线性
    Image.BICUBIC :三次样条插值
    Image.ANTIALIAS:高质量


    调整为较小的图片

    from PIL import Image
    
    im = Image.open(r'D:\image_processing\jpgs\ss_1.jpg')
    im_small = im.resize((im.width//2, im.height//2), Image.ANTIALIAS)
    im_small.show()

    image.png


    图像负片,可以使用point()函数,用单参数函数来转换每个像素值。可以使用它来生成图像负片。像素值用1字节无符号整数表示,从最大可能值中减去该值将是每个像素上获得图像反转所需的精确点操作。

    from PIL import Image
    
    im = Image.open(r'D:\image_processing\jpgs\ss.jpg')
    im_t = im.point(lambda x: 255 - x)
    im_t.show()

    image.png


    将图片转换为灰度图像。可以使用带有L参数的convert()函数将RGB彩色图像更改为灰度图像。

    from PIL import Image
    
    im = Image.open(r'D:\image_processing\jpgs\ss.jpg')
    im_l = im.convert('L')
    im_l.show()

    image.png


    对数变换可以有效地压缩具有动态像素值的图像

    原图

    image.png

    对数变换code

    from PIL import Image
    import numpy as np
    
    im_g = Image.open(r'D:\image_processing\jpgs\aaa.jpg')
    im_g.point(lambda x: 255*np.log(1+x/255)).show()

    image.png

    可以看到,像素值的范围缩小,输入图像中较亮的像素变暗,较暗的像素变亮。


    幂律变换,幂律变换用作图像的Y校正,增强较暗的图像

    from PIL import Image
    
    im_g = Image.open(r'D:\image_processing\jpgs\aaa.jpg')
    im_g.point(lambda x: 255*(x/255)**0.5).show()

    image.png

    与上面的相比,效果非常明显,增强较暗的图像。

关键字