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

Pytorch读取照片

  • 一、PIL
    • 1.安装方式
    • 2.举例
  • 二、OpenCV
    • 1.安装方式
    • 2.举例
  • 三、torchvision.io
    • 1.举例
  • 四、注意事项
    • 1.PIL或者opencv读取后数据转换为Tensor
    • 2.torch.io读取的数据为Tensor,但数据类型为ByteTensor

一、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

你可能感兴趣的:(Python,深度学习,Pytorch,pytorch,python,计算机视觉,人工智能,卷积神经网络)