Pytorch图片转tensor/图片转tensor转图片(numpy array)(transforms.ToTensor())(opencv形式转tensor)
把图片转成成torch的tensor数据,一般采用函数:torchvision.transforms。通过一个例子说明,先用opencv读取一张图片,然后在转换;注意一点是:opencv储存图片的格式和torch的储存方式不一样,opencv储存图片格式是(H,W,C),而torch储存的格式是(C,H,W)。import torchvision.transforms as transformsi
·
注意,读取图片成numpy array的范围是[0,255]是uint8
而转成tensor的范围就是[0,1.0], 是float
把图片转成成torch的tensor数据,一般采用函数:torchvision.transforms。通过一个例子说明,先用opencv读取一张图片,然后在转换;注意一点是:opencv储存图片的格式和torch的储存方式不一样,opencv储存图片格式是(H,W,C),而torch储存的格式是(C,H,W)。
经过transforms.ToTensor()得到的结果就是0-1.0的,而且通道转成(c,h,w)了
import torchvision.transforms as transforms import cv2 img = cv2.imread('image/000001.jpg') img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) print(img.shape) # numpy数组格式为(H,W,C) img_tensor = transforms.ToTensor()(img) # tensor数据格式是torch(C,H,W) print(img_tensor.size())
但是注意imread读出来是BGR的,需要转一下
可以用plt.imread或者skimage.io.imread, 读出来都是RGB
import torchvision.transforms as transforms import matplotlib.pyplot as plt img = plt.imread('wave.jpg') print(img.shape) # numpy数组格式为(H,W,C) img_tensor = transforms.ToTensor()(img) # tensor数据格式是torch(C,H,W) print(img_tensor.size())
也可以用
from imageio import imread 读
图片转tensor转图片
有时候需要图片转tensor,在tensor做操作之后再转回去
import torchvision.transforms as transforms import cv2 import torchvision import torch import torch.nn.functional as F img = cv2.imread('wave.jpg') img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) print(img.shape) # numpy数组格式为(H,W,C) img_tensor = transforms.ToTensor()(img) # tensor数据格式是torch(C,H,W) print(img_tensor.size()) input_tensor = img_tensor.clone().detach().to(torch.device('cpu'))# 到cpu torchvision.utils.save_image(input_tensor, "out_cv.jpg")
如果是转成numpy array的话
import torchvision.transforms as transforms import cv2 import torchvision import torch import torch.nn.functional as F from PIL import Image img = cv2.imread('1.jpg') img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) print(img.shape) # numpy数组格式为(H,W,C) img_tensor = transforms.ToTensor()(img) # tensor数据格式是torch(C,H,W) print(img_tensor.size()) #------code is from torchvision.utils.save_image()--------- input_tensor = img_tensor.clone().detach().to(torch.device('cpu'))# 到cpu ndarr = input_tensor.mul(255).add_(0.5).clamp_(0, 255).permute(1, 2, 0).to('cpu', torch.uint8).numpy() im = Image.fromarray(ndarr) #---------------------------------------------------------- im.save("test.jpg")
点击阅读全文
更多推荐
活动日历
查看更多
直播时间 2025-02-26 16:00:00


直播时间 2025-01-08 16:30:00


直播时间 2024-12-11 16:30:00


直播时间 2024-11-27 16:30:00


直播时间 2024-11-21 16:30:00


目录
所有评论(0)