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

2024-06-22 16:28

本文主要是介绍【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())

裁剪结果:

在这里插入图片描述

这篇关于【PyTorch】【机器学习】图片张量、通道分解合成和裁剪的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1084810

相关文章

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你