• PIL学习


    PIL学习

    目录:

    • PIL和Pillow
    • PIL的size属性
    • PIL的mode属性
    • PIL的图像转换
    • Numpy 和 PIL.Image 的联动

    参考:

    • Pillow mode https://pillow.readthedocs.io/en/stable/handbook/concepts.html#concept-modes

    归一化

    https://blog.csdn.net/weixin_49346755/article/details/127366789

    PIL和Pillow

    PIL全称:python image library。

    Pillow是PIL的分支(进化版),你可以将两者视为同一样东西。当你用pip下载pillow时使用的是pip install pillow,当你在python解释器中导入pillow时,使用的是import PIL

    在这里插入图片描述

    PIL的size属性

    我们通过size属性来查看图像的大小,图片大小可以通过size属性进行访问。

    PIL的mode属性

    PIL共有12种模式,其中常用的L模式是1通道、8位整型灰度图像,RGB是3通道、24位整型灰度图像。注意F是1通道、32位浮点型图像,对于32位浮点型数据的理解可以参看IEEE 754标准。

    请添加图片描述

    我们通过PIL.Image.open(“path”)创建PIL.Image对象,查看该对象的mode属性来查看其mode。

    PIL的图像转换

    更改mode属性即对图像的类型进行转换,如将RGB转为L,就是将彩色图片转换为了灰度图片。

    Image中mode更改

    使用convert方法进行mode参数的更改,convert中需要填写上述mode中参数。

    from PIL import Image
    image = Image.open("/home/...")
    image = image.convert("L")
    
    • 1
    • 2
    • 3

    Numpy 和 PIL.Image 的联动

    PIL.Image对象中的单个元素的类型设置比较少,没办法满足你的要求?例如我们需要将Image传入Pytorch框架进行训练,由于Pytorch框架的权重是torch.float32类型,我们就需要将输入图片中每个像素点元素的值的类型设置为float32,如果你对PIL.Image的mode类型不了解,也可以将PIL.Image对象转为numpy.ndarray类型对象处理后处理再转为PIL.Image类型。

    numpy的dtype

    numpy的dtype类似PIL.Image.mode,能够规定numpy的数据元素类型,常见的dtype如下:

    请添加图片描述

    PIL的图像可以在ImageNumpy中实现自由转换。

    from PIL import Image
    import numpy as np
    # Image 转 Numpy
    image = Image.open("/home/...")
    image = np.array(image)
    # Numpy 转 Image
    image = Image.fromarray(image)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    Image中type更改

    Image中单个元素的type更改可以考虑先将其转换为Numpy,再在Numpy中指定dtype数据类型再转为Image类型。

    # 指定numpyt的dtype类型
    image = Image.open("/home/...")
    image = np.array(image)
    image = image.astype("float32")
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    【毕业设计】深度学习 opencv python 实现中国交通标志识别
    Java刷题day27
    在VS里使用C#制作窗口应用
    七、计算机视觉-图像的ROI区域
    (一)逻辑回归及其代价函数 --- 吴恩达深度学习笔记
    JAVA webservice配置xfire
    机器学习笔记:轨迹驻留点 staypoint
    如何使用Python构建OTP验证系统?
    postman---postman参数化
    最受欢迎的 Linux 怎么是它,Ubuntu 排第六
  • 原文地址:https://blog.csdn.net/qq_43369406/article/details/127781871