pytorch中使用vutils对多张图像进行拼接 (import torchvision.utils as vutils)
1.png
2.png
在pytorch中使用torchvision的vutils函数实现对多张图片的拼接。具体操作就是将上面的两张图片,1.png和2.png的多张图片进行拼接形成一张图片,拼接后的效果如下图。
给出具体代码:
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
import torch
import torchvision.utils as vutils im1=Image.open("1.png").convert("RGB")
im1 = im1.resize((1000, 1000)).rotate(-90) im2=Image.open("2.png").convert("RGB")
im2 = im2.resize((1000, 1000)).rotate(-90) # 1000, 1000, 3 => 3, 1000, 1000
images = [np.moveaxis(np.array(im1), 2, 0), np.moveaxis(np.array(im2), 2, 0)]*8 images_tensor = vutils.make_grid(torch.tensor(images)/255.0, nrow=4, padding=0, normalize=True)
print(images_tensor.shape)
# 3, 1000, 1000 => 1000, 1000, 3
plt.imshow(images_tensor.numpy().transpose((1,2,0)))
plt.show() vutils.save_image(images_tensor, "3.png")
vutils.save_image(images_tensor, "3_back.png", nrow=2, padding=0, normalize=True)
vutils.save_image(torch.tensor(images)/255.0, "4.png", nrow=8, padding=0, normalize=True)
=============================================
需要注意的地方:
- 1. 使用PIL读入的图片要转为RGB模式,然后要将图片对象转为numpy数组形式,在上面例子中转为数组后的单张图片维度为(1000,1000,3)。
- 2. 使用vutils.make_grid函数对图片进行拼接时,每张图片的数据类型都为torch.tensor,并且单张图片的格式应为(channel数,长,宽),上面例子中则是(3,1000,1000)。这样将16张图片拼接为每行4张图片的大图后,大图的维度为(3,4000,4000)。
- vutils.make_grid函数和vutils.save_image函数接受的pytorch.tensor的类型均为float,如果不能保证数据大小在0和1之间则需要设置正则项normalize=True 。
-------------------------------------------------------------
pytorch中使用vutils对多张图像进行拼接 (import torchvision.utils as vutils)的更多相关文章
- ros中同时订阅两个topic(2张图像)合并成一个topic(1张图像)
2019-12-06 15:42:39 先暂时做个资料保存 要同时用两个红外相机,但是没有做硬件上的 时间戳同步,就是笔记本上同时插着两个相机. 两个topic发布各自相机的图像,然后要有个节点同时订 ...
- PyTorch中使用深度学习(CNN和LSTM)的自动图像标题
介绍 深度学习现在是一个非常猖獗的领域 - 有如此多的应用程序日复一日地出现.深入了解深度学习的最佳方法是亲自动手.尽可能多地参与项目,并尝试自己完成.这将帮助您更深入地掌握主题,并帮助您成为更好的深 ...
- Pytorch中RoI pooling layer的几种实现
Faster-RCNN论文中在RoI-Head网络中,将128个RoI区域对应的feature map进行截取,而后利用RoI pooling层输出7*7大小的feature map.在pytorch ...
- 【PyTorch】PyTorch中的梯度累加
PyTorch中的梯度累加 使用PyTorch实现梯度累加变相扩大batch PyTorch中在反向传播前为什么要手动将梯度清零? - Pascal的回答 - 知乎 https://www.zhihu ...
- pytorch中DataLoader, DataSet, Sampler之间的关系
转自:https://mp.weixin.qq.com/s/RTv0cUWvc0kuXBeNoXVu_A 自上而下理解三者关系 首先我们看一下DataLoader.__next__的源代码长什么样,为 ...
- [Pytorch框架] 4.2.2 使用Tensorboard在 PyTorch 中进行可视化
文章目录 4.2.2 使用Tensorboard在 PyTorch 中进行可视化 Tensorboard 简介 Tensorboard 安装 页面 SCALAR IMAGES GRAPHS HISTO ...
- 对pytorch中Tensor的剖析
不是python层面Tensor的剖析,是C层面的剖析. 看pytorch下lib库中的TH好一阵子了,TH也是torch7下面的一个重要的库. 可以在torch的github上看到相关文档.看了半天 ...
- 交叉熵的数学原理及应用——pytorch中的CrossEntropyLoss()函数
分类问题中,交叉熵函数是比较常用也是比较基础的损失函数,原来就是了解,但一直搞不懂他是怎么来的?为什么交叉熵能够表征真实样本标签和预测概率之间的差值?趁着这次学习把这些概念系统学习了一下. 首先说起交 ...
- 转pytorch中训练深度神经网络模型的关键知识点
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_42279044/articl ...
- (转载)Pytorch中的仿射变换(affine_grid)
转载于:Pytorch中的仿射变换(affine_grid) 参考:详细解读Spatial Transformer Networks (STN) 假设我们有这么一张图片: 下面我们将通过分别通过手 ...
随机推荐
- Javascript高级程序设计第四章 | ch4 | 阅读笔记
变量.作用域与内存 原始值与引用值 什么是字面量形式? let obj = { key1: val1, key2: val2, foo () { } } 这就是字面量形式,手动声明一个对象的属性和方法 ...
- 在线Token、随机密码生成工具
在线生成自定义长度,包含大写或小写字母.数字或符号的随机字符串.无论你需要生成API访问令牌.账户激活令牌,还是随机密码字符串,它都能帮你快速完成. 在线Token.随机密码生成工具
- 记一次 .NET某机械臂上位系统 卡死分析
一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序会偶发性的卡死一段时间,然后又好了,让我帮忙看下怎么回事?窗体类的程序解决起来相对来说比较简单,让朋友用procdump自动抓一个卡死时的du ...
- requests的使用
准备工作 安装request库 pip install request 实例引入 get方法实现GET请求,返回一个Response对象,存放在变量r中,分别输出响应的类型.状态码.响应体的类型.内容 ...
- 淘宝二面:千万级数据中如何用Redis维护热点数据"?
MySQL里有千万条数据,但是Redis中只存10万的数据,如何保证redis中的数据都是热点数据? 我是小宋, 一个只熬夜但不秃头的Java程序员.关注我,带你轻松过面试.提升简历亮点(14个dem ...
- CLR via C# 笔记 -- 特性(18)
1. 特性继承自System.Attribute,能作用于TypeDef(类.结构.枚举.接口和委托),MethodDef(含构造器),ParamDef,FieldDef,PropertyDef,Ev ...
- 在WPF UWP WinUI中相同功能的用法的区别
文件选择器 WPF:OpenFileDialog Microsoft.Win32.OpenFileDialog openFileDialog = new(); bool? result = openF ...
- .NET Core WebAPI项目部署iis后Swagger 404问题解决
.NET Core WebAPI项目部署iis后Swagger 404问题解决 前言 之前做了一个WebAPI的项目,我在文章中写到的是Docker方式部署,然后考虑到很多初学者用的是iis,下面讲解 ...
- 【论文阅读】ICRA2022: Panoptic Multi-TSDFs: a Flexible Representation for Online Multi-resolution Volumetric Mapping and Long-term Dynamic Scene Consistency
Type: ICRA Year: 2022 tag: SLAM 参考与前言 论文链接:https://arxiv.org/abs/2109.10165 代码链接:https://github.com/ ...
- Nuxt3 的生命周期和钩子函数(八)
title: Nuxt3 的生命周期和钩子函数(八) date: 2024/6/30 updated: 2024/6/30 author: cmdragon excerpt: 摘要:本文介绍了Nuxt ...