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)的更多相关文章

  1. ros中同时订阅两个topic(2张图像)合并成一个topic(1张图像)

    2019-12-06 15:42:39 先暂时做个资料保存 要同时用两个红外相机,但是没有做硬件上的 时间戳同步,就是笔记本上同时插着两个相机. 两个topic发布各自相机的图像,然后要有个节点同时订 ...

  2. PyTorch中使用深度学习(CNN和LSTM)的自动图像标题

    介绍 深度学习现在是一个非常猖獗的领域 - 有如此多的应用程序日复一日地出现.深入了解深度学习的最佳方法是亲自动手.尽可能多地参与项目,并尝试自己完成.这将帮助您更深入地掌握主题,并帮助您成为更好的深 ...

  3. Pytorch中RoI pooling layer的几种实现

    Faster-RCNN论文中在RoI-Head网络中,将128个RoI区域对应的feature map进行截取,而后利用RoI pooling层输出7*7大小的feature map.在pytorch ...

  4. 【PyTorch】PyTorch中的梯度累加

    PyTorch中的梯度累加 使用PyTorch实现梯度累加变相扩大batch PyTorch中在反向传播前为什么要手动将梯度清零? - Pascal的回答 - 知乎 https://www.zhihu ...

  5. pytorch中DataLoader, DataSet, Sampler之间的关系

    转自:https://mp.weixin.qq.com/s/RTv0cUWvc0kuXBeNoXVu_A 自上而下理解三者关系 首先我们看一下DataLoader.__next__的源代码长什么样,为 ...

  6. [Pytorch框架] 4.2.2 使用Tensorboard在 PyTorch 中进行可视化

    文章目录 4.2.2 使用Tensorboard在 PyTorch 中进行可视化 Tensorboard 简介 Tensorboard 安装 页面 SCALAR IMAGES GRAPHS HISTO ...

  7. 对pytorch中Tensor的剖析

    不是python层面Tensor的剖析,是C层面的剖析. 看pytorch下lib库中的TH好一阵子了,TH也是torch7下面的一个重要的库. 可以在torch的github上看到相关文档.看了半天 ...

  8. 交叉熵的数学原理及应用——pytorch中的CrossEntropyLoss()函数

    分类问题中,交叉熵函数是比较常用也是比较基础的损失函数,原来就是了解,但一直搞不懂他是怎么来的?为什么交叉熵能够表征真实样本标签和预测概率之间的差值?趁着这次学习把这些概念系统学习了一下. 首先说起交 ...

  9. 转pytorch中训练深度神经网络模型的关键知识点

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_42279044/articl ...

  10. (转载)Pytorch中的仿射变换(affine_grid)

    转载于:Pytorch中的仿射变换(affine_grid) 参考:详细解读Spatial Transformer Networks (STN) 假设我们有这么一张图片:   下面我们将通过分别通过手 ...

随机推荐

  1. 前端React的事件机制

    前端React技术框架的事件机制不同于常见的事件机制--原生事件,此文将介绍React的事件机制是什么,与原生事件的区别,以及这两种事件机制是否可以混用等.希望您在阅读这篇文章之后,能够对React的 ...

  2. 直播预告|把握转型浪潮下的机会,甄知科技教你保姆级IT服务管理

    近年来,5G.云计算.大数据.物联网.区块链.人工智能等新兴技术不断在企业中协同发展应用,推动着企业的数字化程度逐步加深.自新冠疫情发生以来,企业的远程服务.服务自助等服务需求激增,企业数字化转型需求 ...

  3. Json输出List集合对象和map对象 JSON格式

    Json输出List集合对象和map对象 JSON格式 //Json输出List集合对象 [{"属性1":["值1"],"属性2":&quo ...

  4. WebUI自动化测试-监听元素有无变化

    from datetime import datetime,timedelta from selenium.webdriver.common.by import By def get_inocSum( ...

  5. Playbook条件语句

    目录 Playbook条件语句 1. when的基本使用 1.1 when的基本示例 1.2比较运算符 1.3 比较运算符示例 1.4 逻辑运算符 1.5 逻辑运算符示例 2. 条件判断与block ...

  6. 在Markdown中使用base64存图片

    author="CKboss" date="2022-4-19" title="在Markdown中使用base64存图片" +++ 在Ma ...

  7. MoneyPrinterPlus:AI自动短视频生成工具-微软云配置详解

    MoneyPrinterPlus可以使用大模型自动生成短视频,我们可以借助Azure提供的语音服务来实现语音合成和语音识别的功能. Azure的语音服务应该是我用过的效果最好的服务了,微软还得是微软. ...

  8. hive第二课:Hive3.1.2概述与基本操作(修改版)

    Hive3.1.2概述与基本操作 1.Hive基本概念 1.1 Hive简介 Hive本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据存储,说白了hive可以理解为一个将 ...

  9. c 语言学习第三天

    字符和字符串 字符 当我们定义了一个字符变量 c 为a时,打印的时候让它使整数形式显示.会出现怎么一个情况? #include<stdio.h> int main(){ char c = ...

  10. 洛谷P1043

    [NOIP2003 普及组] 数字游戏 题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前 ...