PIL数据读取与转换格式,tensor形式转为图片 您所在的位置:网站首页 opencv图片格式转换 PIL数据读取与转换格式,tensor形式转为图片

PIL数据读取与转换格式,tensor形式转为图片

2023-03-01 19:43| 来源: 网络整理| 查看: 265

PIL读取图片格式以及数据转换操作

最近在看图片处理和深度学习的知识,对于PIL库的数据处理进行学习理解以便记录。

1.PIL数据读取格式:

PIL库读取的图片格式是 H x W x C 格式的。比如一张图是128x128x3,图片格式PIL.PngImagePlugin.PngImageFile。 通过numpy.array(img)或者numpy.asarray(img),转化为uint8的数值数组形式,数值范围在0-255之间。两个函数的区别在于array函数会copy一个新的副本,占用新的空间,asarray不会。

import numpy as np from PIL import Image img = Image.open(path) img = np.array(img) # img是数值范围在0-255之间的uint8格式数组 # 注意img的形状是 H x W x C # 如果想改变数组形状,可以使用transpose(idx1, idx2, idx3) 2.转换为tensor形式:

在Pytorch中,图片张量形式是 C x H x W,所以要把数组转置转置,用到transpose

import torch from torchvision import transforms # 1. img = np.array(img).transpose(2, 0, 1) # 表示C x H x W img1 = torch.tensor(img / 255) # 神经网络里的张量数值一般在0-1之间归一化处理,所以除以255 # 此时获得的数组就是形状为C x H x W的张量,数值0-1 # dtype=torch.float64 # 2. # 或者经过transforms处理 trans = transforms.Compose([ transforms.ToTensor() ]) img2 = trans(img) # 自动转化为形状CxHxW的张量形式 3.由tensor转换为图片

经过tensor的处理过程之后,要将tensor形式转换为图片。 用到numpy()函数,fromarray()函数。uint8函数

# 这里将tensor形式用numpy()函数转为数组形式, # 并且用transpose将数组转置为PIL能够处理的WxHxC形式。 nimg = img.numpy().transpose(1,2,0) img = nimg * 255 # 将原来tensor里0-1的数值乘以255,以便转为uint8数据形式,uint8是图片的数值形式。 #那么此时img就是原料,通过两种方式将img化为图片 # 第一种 Image.fromarray(np.uint8(img)) # eg1 # 第二种 Image.fromarray(img.astype(np.uint8))#eg2 转载

本文转载自:PIL数据读取与转换格式,tensor形式转为图片_pytorch_世事如棋乾坤难测-DevPress官方社区 (csdn.net)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有