最近在用pytroch进行图像预处理和结果输出遇到了Tensor、PIL、Numpy三者之间相互转化,通过查阅资料,得到了三者相互转化的代码,在此进行汇总。
参考链接
1.Pytorch中Tensor与各种图像格式的相互转化
2.PyTorch载入图片后ToTensor解读(含PIL和OpenCV读取图片对比)
3.Image.fromarray的用法(实现array到image的转换)
4.【Pytorch】torchvision.utils.save_image直接保存tensor为图片
摘抄语句
1.PIL图像在转换为numpy.ndarray后,格式为(h,w,c),像素顺序为RGB;
OpenCV在cv2.imread()后数据类型为numpy.ndarray,格式为(h,w,c),像素顺序为BGR。
2.可以从to_tensor()函数看到,函数接受PIL Image或numpy.ndarray,将其先由HWC转置为CHW格式,再转为float后每个像素除以255.
3.注意,读取图片成numpy array的范围是[0,255]是uint8而转成tensor的范围就是[0,1.0], 是float。