RGB图片的处理和复原

python 复制代码
import torch
from PIL import Image
from torchvision import transforms
import matplotlib.pyplot as plt
# 打开一个图像文件
image = Image.open('dog.jpg')
#显示原图
plt.imshow(image)
plt.axis('off')  # 关闭坐标轴,让图像展示更简洁
plt.show()
# 创建一个转换操作,只包含 ToTensor()
a = transforms.ToTensor()

# 应用转换操作,将 PIL 图像转换为 PyTorch 张量
tensor_image = a(image)

tensor_image_unsqueezed = tensor_image.unsqueeze(0)
# 打印转换后的张量形状
print(tensor_image_unsqueezed.shape)
# 首先,如果之前增加了批量维度(维度为1的那个维度),先去掉这个维度
tensor_image_original_shape = tensor_image_unsqueezed.squeeze(0)

# 将张量的维度从 C×H×W 转换回 PIL 图像要求的 H×W×C 格式,并将像素值从 [0, 1] 范围转换回 [0, 255] 范围,且转换为无符号8位整数类型
image_np = tensor_image_original_shape.permute(1, 2, 0).numpy() * 255
image_np = image_np.astype('uint8')

# 使用 PIL 的 Image.fromarray 函数将 numpy 数组转换回 PIL 图像
recovered_image = Image.fromarray(image_np)

# 使用 matplotlib 展示恢复后的图像(也可以直接使用 recovered_image.show() 展示,但 matplotlib 展示在一些场景下更灵活,比如可以控制展示的布局等)
plt.imshow(recovered_image)
plt.axis('off')
plt.show()

原图:

复制代码
张量形状:torch.Size([1, 3, 640, 515])

复原:

处理:

复制代码
transforms.ToTensor():transforms.ToTensor()-CSDN博客

简单理解就是进行三个操作

1.将输入数据(H x W x C)变为(C x H x W)

2.将图像的像素值从 0, 255 范围归一化到 0.0, 1.0 范围。方便后续处理

3.将 PIL 图像或 NumPy ndarray 转换为 PyTorch 张量(Tensor)

然后对张量进行处理

复原:

因为处理进行了这些操作所以逆向转变

复制代码
# 首先,如果之前增加了批量维度(维度为1的那个维度),先去掉这个维度
tensor_image_original_shape = tensor_image_unsqueezed.squeeze(0)

# 将张量的维度从 C×H×W 转换回 PIL 图像要求的 H×W×C 格式,并将像素值从 [0, 1] 范围转换回 [0, 255] 范围,且转换为无符号8位整数类型
image_np = tensor_image_original_shape.permute(1, 2, 0).numpy() * 255
image_np = image_np.astype('uint8')

# 使用 PIL 的 Image.fromarray 函数将 numpy 数组转换回 PIL 图像
recovered_image = Image.fromarray(image_np)
相关推荐
在所不辞兄15 分钟前
【人工智能驱动的电催化研究-01】人工智能是什么?AI、机器学习、深度学习和神经网络之间有什么区别?
人工智能·深度学习·神经网络·机器学习·有限元仿真·电化学·电催化
A7bert77725 分钟前
【MobileSAM部署至RK3588】环境适配→转换RKNN→开发板部署
c++·人工智能·深度学习·目标检测·ubuntu
如若1232 小时前
TRACER 论文解读与复现:面向 ICU 长时程患者监测的多模态 Harness 架构、时序证据建模与工具增强推理
人工智能·深度学习·计算机视觉
盼小辉丶19 小时前
PyTorch强化学习实战——从零开始实现魔方求解器
pytorch·深度学习·强化学习
呆萌很20 小时前
深度学习中检测、识别、感知区别
人工智能·深度学习
武天旭20 小时前
AI安全--AI大模型的关键技术组成
人工智能·深度学习·安全·机器学习
计算机毕业编程指导师21 小时前
基于深度学习的花卉图像分类识别系统(PyTorch + ResNet50 + Django)
pytorch·python·深度学习·分类·毕业设计·迁移学习·图像分类
集芯微电科技有限公司21 小时前
40V/24A高频率增强型GaN HEMT功率开关管/高频DC转换/电动工具/GaN充电器 方案首选
人工智能·科技·单片机·嵌入式硬件·深度学习·神经网络·生成对抗网络
地平线开发者1 天前
CLIP 的训练机制:从对比学习到图文对齐
深度学习·算法·自动驾驶
具身AGI1 天前
家用导航的安全,要看它离什么多近多快
人工智能·深度学习·安全