【无标题】Image-to-Image Translation 图像风格迁移中的成对图像拼接代码

引 言 在图像风格迁移任务中,近几年比较火热的Generative Adversarial Nets (GAN)模型以及各种变体深受视觉研究团体的青睐,在具体任务中取得比较不错的实验表现。在有监督图像风格迁移任务迁移中,需要输入给模型成对的图片(一个来自源域source domain,一个来自目标域target domain)。成对图像底层内容可以相同,pix2pix模型主要研究这类图像集合,图像底层内容也可以不同,CycleGAN模型主要解决底层内容不同的风格迁移问题。在图像输入模型前需要对图像进行预处理,可以将两个领域的图像拼接成一张图作为模型的输入。本文主要讲述两个用于图像拼接处理的代码。代码来源于文章【Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks】[paper] [Project code]

文章目录

  • 一、PIL库实现图像拼接
  • 二、cv2库实现图像拼接
  • 三、总结

一、PIL库实现图像拼接

图像拼接的前提条件是两张图具有相同的尺寸,若尺寸不同需要采用缩放、裁剪等策略对图像进行预处理。调用Image.new(mode, size)创建拼接图,通过 paste()函数将两张图片粘贴到指定位置。
示例代码:

def align_images(a_file_paths, b_file_paths, target_path):if not os.path.exists(target_path):os.makedirs(target_path,exist_ok=True)for i in range(len(a_file_paths)):img_a = Image.open(a_file_paths[i])img_b = Image.open(b_file_paths[i])assert(img_a.size == img_b.size)aligned_image = Image.new("RGB", (img_a.size[0] * 2, img_a.size[1]))aligned_image.paste(img_a, (0, 0))aligned_image.paste(img_b, (img_a.size[0], 0))aligned_image.save(os.path.join(target_path, '{:04d}.jpg'.format(i)))if __name__ == '__main__':img_A_path = './2007_000121.jpg'img_B_path = './2007_000123.jpg'img_AB_dir = './AB/splice'align_images([img_A_path], [img_B_path], img_AB_dir)

图片效果
在这里插入图片描述

二、cv2库实现图像拼接

首先调用cv2.imread()函数读取两张图片,将两张图片拼接后调用cv2.imwrite()函数写入到新图片文件中。
示例代码

def image_write(path_A, path_B, path_AB):if not os.path.exists(path_AB):os.makedirs(path_AB,exist_ok=True)im_A = cv2.imread(path_A, 1) # python2: cv2.CV_LOAD_IMAGE_COLOR; python3: cv2.IMREAD_COLORim_B = cv2.imread(path_B, 1) # python2: cv2.CV_LOAD_IMAGE_COLOR; python3: cv2.IMREAD_COLORim_AB = np.concatenate([im_A, im_B], 1)img_save = os.path.join(path_AB,'concate.jpg')cv2.imwrite(img_save, im_AB)if __name__ == '__main__':img_A_path = './2007_000121.jpg'img_B_path = './2007_000123.jpg'img_AB_dir = './AB/splice'image_write(img_A_path,img_B_path,img_AB_dir)

三、总结

在视觉项目中,图像数据集的预处理是一个非常重要的关键环节,在CycleGAN的项目代码中除本文 描述的一个小细节外,还有很多图像数据预处理代码值得大家学习和引用。在引言部分给出了项目代码的 hub库。想要阅读项目代码的同学可以自行下载学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/51925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gaussian Splatting 在 Ubuntu22.04 下部署

代码:graphdeco-inria/gaussian-splatting (github) 论文:[2308.04079] 3D Gaussian Splatting for Real-Time Radiance Field Rendering (arxiv.org) 1. 禁用自带驱动 Nouveau Ubuntu 自带的显卡驱动,是非 Nvida 官方版。在后面装 CUDA 的时候,会报驱动不兼容问题。 1.…

2024关于接口测试自动化的总结与思考!

序 近期看到阿里云性能测试 PTS 接口测试开启免费公测,本着以和大家交流如何实现高效的接口测试为出发点,本文包含了我在接口测试领域的一些方法和心得,希望大家一起讨论和分享,内容包括但不仅限于: 服务端接口测试介…

如何将网站地图Sitemap提交至百度、谷歌及Bing搜索引擎

原文:如何将网站地图Sitemap提交至百度、谷歌及Bing搜索引擎 - 孔乙己大叔 (rebootvip.com) 在当今高度竞争的互联网环境中,搜索引擎优化(SEO)对于网站的可见性和成功至关重要。网站地图(Sitemap)&#xff…

死锁问题分析和解决——资源回收时

1.描述问题 在完成线程池核心功能功能时,没有遇到太大的问题(Any,Result,Semfore的设计),在做线程池资源回收时,遇到了死锁的问题 1、在ThreadPool的资源回收,等待线程池所有线程退出时&#xff…

【Redis】数据类型详解及其应用场景

目录 Redis 常⻅数据类型预备知识基本全局命令小结 数据结构和内部编码单线程架构引出单线程模型为什么单线程还能这么快 Redis 常⻅数据类型 Redis 提供了 5 种数据结构,理解每种数据结构的特点对于 Redis 开发运维⾮常重要,同时掌握每种数据结构的常⻅…

【Oracle篇】统计信息和动态采样的深度剖析(第一篇,总共六篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…

PostgreSQL-02-入门篇-查询数据

文章目录 1 简单查询SELECT 语句简介SELECT 语句语法SELECT 示例1) 使用 SELECT 语句查询一列数据的示例2) 使用 SELECT 语句查询多列数据的示例3) 使用 SELECT 语句查询表所有列数据的示例4) 使用带有表达式的 SELECT 语句的示例5) 使用带有表达式的 SELECT 语句的示例 2 列别…

MySQL基础:函数

💎所属专栏:MySQL 函数是指一段可以直接被另一段程序调用的程序或代码,在MySQL中也内置了许多函数供开发者去调用,例如之前提到的聚合函数,本节再去介绍一些其他常用的函数 字符串函数 函数功能CONCAT(S1,S2...Sn)字…

可视化编程-七巧低代码入门02

1.1.什么是可视化编程 非可视化编程是一种直接在集成开发环境中(IDE)编写代码的编程方式,这种编程方式要求开发人员具备深入的编程知识,开发效率相对较低,代码维护难度较大,容易出现错误,也需要…

《图解设计模式》笔记(三)生成实例

五、Singleton模式:只有一个实例 Singleton 是指只含有一个元素的集合。因为本模式只能生成一个实例,因此以 Singleton命名。 示例程序类图 Singleton.java public class Singleton {private static Singleton singleton new Singleton();private Si…

[Meachines] [Easy] bounty web.config 文件上传代码注入+内核MS10-092权限提升

信息收集 IP AddressOpening Ports10.10.10.93TCP:80 $ nmap -p- 10.10.10.93 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION │ 80/tcp open http Microsoft IIS httpd 7.5 …

使用Element UI组件时,icon图标不显示

问题描述: 我在使用Element UI组件的日期选择器时,发现图标不显示(左边是原图,右边的问题图)。 经过检查我发现,我的JS,CSS文件都没有问题,只是缺少了element-icons.tff和element-icons.woff这两个文件。 …

Qt 0814作业

一、思维导图 二、登录窗口界面 自由发挥登录窗口的应用场景,实现一个登录窗口界面 要求:每行代码都有注释 【需要用到的图片或者动图,自己去网上找】 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(par…

【OCR 学习笔记】二值化——全局阈值方法

二值化——全局阈值方法 固定阈值方法Otsu算法在OpenCV中的实现固定阈值Otsu算法 图像二值化(Image Binarization)是指将像素点的灰度值设为0或255,使图像呈现明显的黑白效果。二值化一方面减少了数据维度,另一方面通过排除原图中…

微服务架构的介绍

系统架构的演变 随着互联⽹的发展,⽹站应⽤的规模不断扩⼤,常规的应⽤架构已⽆法应对,分布式服务架构以及微服务架构势在必⾏,必需⼀个治理系统确保架构有条不紊的演进。 单体应用架构 Web应⽤程序发展的早期,⼤部分…

C++入门——“继承”

一、引入 面相对象的计算机语言有三大特性:“封装”、“继承”、“多态”。今天来讲解一下C的一大重要特性——继承。 通俗理解来讲,继承就和现实生活一样,子辈继承父辈的一些特性,C中的继承也可以这样理解。它允许我们在保持原有…

计算机毕业设计选什么题目好?springboot 基于Java的学院教学工作量统计系统

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

vue使用高德获取当前地区天气

1、收件箱 | 高德控制台 (amap.com) 首先打开高德开放平台注册一下 2、创建一个应用获取到key后面获取天气的时候 请求接口的时候会用到key 2.1.1 创建应用的时候注意类型选成天气 2.1.2 创建完成之后就点添加key 然后选择web服务就行 3、可以调取天气接口 天气查询-基础 API…

【鸿蒙学习】HarmonyOS应用开发者基础 - 构建更加丰富的页面(一)

学完时间:2024年8月14日 一、前言叨叨 学习HarmonyOS的第六课,人数又成功的降了500名左右,到了3575人了。 二、ArkWeb 1、概念介绍 ArkWeb是用于应用程序中显示Web页面内容的Web组件,为开发者提供页面加载、页面交互、页面调…

文献检索中JCR与SCIE的区别

一、SCIE Science Citation Index-Expanded(SCI-E,科学引文索引),属于Web of Science中一个子库,是全球著名的科学引文索引数据库,收录了全球自然科学、工程技术、临床医学等领域内170多个学科的9500多种国际性、高影响…