【PyTorch】【机器学习】图片张量、通道分解&合成和裁剪

一、导入所需库

python 复制代码
from PIL import Image
import torch
import numpy as np
import matplotlib.pyplot as plt

二、读取图片

python 复制代码
pic = np.array(Image.open('venice-boat.jpg'))

上述代码解释:先用Image.open()方法读取jpg格式图片,再用np.array()方法将图片转成numpy数组(ndarray)格式。

三、建立张量

图片在PyTorch中以3维张量表示。以下代码将图片转换成张量形式:

python 复制代码
pic_tensor = torch.from_numpy(pic)

打印张量数据内容:

python 复制代码
print(pic_tensor)

输出:

python 复制代码
tensor([[[ 47, 138, 221],  # 每个像素点的RGB颜色值
         [ 49, 138, 220],
         [ 50, 139, 221],
         ...,
         [ 89, 149, 221],
         [ 87, 150, 221],
         [ 86, 149, 220]],

        [[ 47, 138, 221],
         [ 49, 138, 220],
         [ 50, 139, 221],
         ...,
         [ 88, 148, 220],
         [ 85, 148, 219],
         [ 85, 148, 219]],

        [[ 47, 138, 221],
         [ 49, 138, 220],
         [ 50, 139, 221],
         ...,
         [ 84, 147, 218],
         [ 84, 147, 218],
         [ 83, 146, 217]],

        ...,

四、通过张量对图片进行操作

(注:在以下的各个操作下,还需要用plt.show()语句才能将图片输出到屏幕上。)

1、打印整张图片

python 复制代码
plt.imshow(pic)

2、分RGB通道打印图片

输出通道1:
python 复制代码
plt.imshow(pic_tensor[:, :, 0].numpy())
输出通道2:
python 复制代码
plt.imshow(pic_tensor[:, :, 1].numpy())
输出通道3:
python 复制代码
plt.imshow(pic_tensor[:, :, 2].numpy())


注意: 三通道并不是简单的算术叠加,例如以下代码的输出和原图大相径庭:

python 复制代码
from PIL import Image
import torch
import numpy as np
import matplotlib.pyplot as plt


pic_1 = np.array(Image.open('Channel_1.jpg'))
pic_2 = np.array(Image.open('Channel_2.jpg'))
pic_3 = np.array(Image.open('Channel_3.jpg'))

pic_tensor_1 = torch.from_numpy(pic_1)
pic_tensor_2 = torch.from_numpy(pic_2)
pic_tensor_3 = torch.from_numpy(pic_3)

pic_tensor = pic_tensor_1 + pic_tensor_2 + pic_tensor_3
plt.imshow(pic_tensor.numpy())

plt.show()

输出图片:

3、裁剪图片

对图片张量的裁剪在其前2个维度上进行(第3个维度为颜色通道),示例代码如下:

python 复制代码
plt.imshow(pic_tensor[50: 1050, 400: 800, :].numpy())

裁剪结果:

相关推荐
说私域3 分钟前
日本零售精髓赋能下 链动2+1模式驱动新零售本质回归与发展格局研究
人工智能·小程序·数据挖掘·回归·流量运营·零售·私域运营
千里马也想飞5 分钟前
汉语言文学《朝花夕拾》叙事艺术研究论文写作实操:AI 辅助快速完成框架 + 正文创作
人工智能
玉梅小洋6 分钟前
解决 VS Code Claude Code 插件「Allow this bash command_」弹窗问题
人工智能·ai·大模型·ai编程
肾透侧视攻城狮6 分钟前
《解锁计算机视觉:深度解析 PyTorch torchvision 核心与进阶技巧》
人工智能·深度学习·计算机视觉模快·支持的数据集类型·常用变换方法分类·图像分类流程实战·视觉模快高级功能
一战成名9967 分钟前
AI 模型持续集成流水线:CANN 支持的 DevOps 最佳实践
人工智能·ci/cd·devops
23遇见11 分钟前
AI视角下的 CANN 仓库架构全解析:高效计算的核心
人工智能
有趣的杰克11 分钟前
开源|macOS 菜单栏 AI 启动器 GroAsk:⌥Space 一键直达 ChatGPT / Claude / Gemini
人工智能·macos·chatgpt
yumgpkpm11 分钟前
预测:2026年大数据软件+AI大模型的发展趋势
大数据·人工智能·算法·zookeeper·kafka·开源·cloudera
星爷AG I15 分钟前
11-2 距离知觉(AGI基础理论)
人工智能·agi
算法狗217 分钟前
大模型面试题:在混合精度训练中如何选择合适的精度
人工智能·深度学习·机器学习·语言模型