torchvision将图片转换成Tensor:transforms.ToTensor()
- transforms.ToTensor()
(1) transforms.ToTensor() 将numpy的ndarray或PIL.Image读的图片转换成形状为(C,H, W)的Tensor格式,且/255归一化到[0,1.0]之间
(2)通道的具体顺序与cv2读的还是PIL.Image读的图片有关系
cv2:(B,G,R)
PIL.Image:(R, G, B)
import torch
import cv2
from PIL import Image
from torchvision import transforms
image = cv2.imread('myimage.jpg') # numpy数组格式(H,W,C=3),通道顺序(B,G,R)
image2 = Image.open('myimage.jpg') # PIL的JpegImageFile格式(size=(W,H))
print(image.shape) # (H,W,3)
print(image2.size) # (W,H)
tran = transforms.ToTensor() # 将numpy数组或PIL.Image读的图片转换成(C,H, W)的Tensor格式且/255归一化到[0,1.0]之间
img_tensor = tran(image)
img2_tensor = tran(image2)
print(img_tensor.size()) # (C,H, W), 通道顺序(B,G,R)
print(img2_tensor.size()) # (C,H, W), 通道顺序(R,G,B)
输出结果 :
- 实际转换流程如下:
参考:
Pytorch之深入torchvision.transforms.ToTensor与ToPILImage