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")

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)

Image中type更改

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

# 指定numpyt的dtype类型
image = Image.open("/home/...")
image = np.array(image)
image = image.astype("float32")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值