当前位置: 首页 > news >正文

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

一、导入所需库

from PIL import Image
import torch
import numpy as np
import matplotlib.pyplot as plt

二、读取图片

pic = np.array(Image.open('venice-boat.jpg'))

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

三、建立张量

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

pic_tensor = torch.from_numpy(pic)

打印张量数据内容:

print(pic_tensor)

输出:

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、打印整张图片

plt.imshow(pic)

在这里插入图片描述

2、分RGB通道打印图片

输出通道1:
plt.imshow(pic_tensor[:, :, 0].numpy())

在这里插入图片描述

输出通道2:
plt.imshow(pic_tensor[:, :, 1].numpy())

在这里插入图片描述

输出通道3:
plt.imshow(pic_tensor[:, :, 2].numpy())

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

from PIL import Image
import torch
import numpy as np
import matplotlib.pyplot as pltpic_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个维度为颜色通道),示例代码如下:

plt.imshow(pic_tensor[50: 1050, 400: 800, :].numpy())

裁剪结果:

在这里插入图片描述

http://www.lryc.cn/news/383765.html

相关文章:

  • 如何提高工业交换机的电源功耗?
  • 源站静态文件更新后,CDN会自动刷新吗
  • Token的应用场景
  • 机器学习课程复习——奇异值分解
  • Java--乐观锁
  • 静默升级oracle 11g (从11.2.0.1升级到11.2.0.4)
  • 什么是模型训练,如何选择合适的Batch大小
  • 【线上绘图网站分享】
  • Snipaste截图工具如何控制框线箭头的粗细程度
  • GISSERVER 管理器 1.0(私有化地图离线部署)
  • Eureka服务治理深度解析:服务下线与剔除机制揭秘
  • 苹果笔记本双系统怎么安装
  • 探索网络爬虫技术:原理、实践与挑战
  • GitHub国内使用方法
  • Java调用第三方HTTP接口的常用方式
  • DOPE-PEG2000-FITC荧光特性
  • 华为Pura70支持5G功能吗?看完你就清楚了
  • android 4大组件用法
  • qt pro工程文件通用宏定义
  • 这次让我们隆重的介绍一下
  • 大语言模型系列-Transformer
  • Node.js 语言特定指南
  • 科普:什么是 BC-404 ?全方位解读最新通缩型 NFT 标准
  • 软件测试学习笔记丨JUnit5执行顺序
  • 解决GPU 显存未能完全释放
  • 3D资产爆发,轻量化需求再度冲高,见证下一代3D崛起!
  • AI绘画的10种变现方法,逼你躺平挣钱
  • Pura 70 系列超高速风驰闪拍,捕捉美好,告别抓拍模糊
  • AI作画Prompt不会写?Amazon Bedrock Claude3.5来帮忙
  • SSL证书类型解析:DV、OV、EV证书的区别与适用场景