Pytorch读取照片的三种方式(包括但不限于)

一、PIL

1.安装方式

conda install pillow

2.举例

from PIL import Image
import numpy as np

path='../dataset/train/hazy/8902.jpg'
img=Image.open(path)
print(type(img))
img_arr=np.array(img)
print(type(img_arr))
print(img_arr.shape)
<class 'PIL.PngImagePlugin.PngImageFile'>
<class 'numpy.ndarray'>
(344, 550, 3)

二、OpenCV

1.安装方式

conda install opencv

2.举例

在使用opencv读取图像时,需要注意其读取后的图像通道按照BGR的顺序排列而不是RGB

import cv2 as cv

img=cv.imread(path)
print(type(img))
print(img.shape)
img=cv.cvtColor(img,code=cv.COLOR_BGR2RGB)
<class 'numpy.ndarray'>
(344, 550, 3)

三、torchvision.io

1.举例

from torchvision.io import image

img=image.read_image(path)
print(type(img))
print(img.shape)
<class 'torch.Tensor'>
torch.Size([3, 344, 550])

四、注意事项

在后续神经网络的搭建及训练中,我们要确保其中涉及到的图像数据为Tensor,并且Tensor的数据类型为浮点型。

1.PIL或者opencv读取后数据转换为Tensor

可将这两种方式读取的数据通过以下方式转换为Tensor:

from torchvision import transforms

img_tensor=transform.ToTensor()(img)

2.torch.io读取的数据为Tensor,但数据类型为ByteTensor

数据类型之间转换方式:

方式一:data=data.type(数据类型)
方式二:data=data.数据类型()

举例:

path='../dataset/train/hazy/8902.jpg'
img=image.read_image(path)
print(img.type())
print(img.shape)  # torch.Size([3, 344, 550])
# img=img.float()
img=img.type(torch.FloatTensor)
print(img.type())
torch.ByteTensor
torch.Size([3, 344, 550])
torch.FloatTensor

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年3月4日 下午12:53
下一篇 2023年3月4日 下午12:54

相关推荐