【Opencv】----- 图片无缝融合

news2024/11/16 15:41:52

上次写了一篇关于GAN缺陷生成的图片的,发现大家的对这个根本不感兴趣,可能是用于在座的各位觉得样本有的是,我为什么还苦哈哈的去生成啊,说的也不是没有道理,可能只是我搞了更加苦哈哈的工业深度学习吧,所以这种技术才显得格外感兴趣,最讨厌听到的客户说,你要那么多图片干什么,谁谁家的软件就不需要这么多图片。直接大写的无语。既然大家都不感兴趣,那我就换个话题。

那我们就来说一说缺陷图片和正常图片无缝融合(反正GAN生成的了的缺陷还是要和正常图片融合),先来看看大家理解的几种融合。

1.cv2.addWeighted(img1,0.5,img2,0.5,0)

这种其实就是img1,img2两张图片对应像素对应加权得到新的像素值,也就img = img1 *0.5 + img2 *0.5 ,img1就是第一张这样,img2就是下图的咩咩狗,img合成后就像下面第三张图的效果

代码如下

img1 = cv2.imread(r'C:\Users\admin\Desktop\1.jpg')
img2 = cv2.imread(r'C:\Users\admin\Desktop\2.jpg')
img2 = cv2.resize(img2,(img1.shape[1],img1.shape[0]))
finall_img = cv2.addWeighted(img1,0.5,img2,0.5,0)
cv2.imshow('finall_img',finall_img)
cv2.waitKey(0)

2.基于mask的替换融合

我们先上效果图,可以看到合成效果图,如果我们的mask画的不够好的话,合成的图就有违和感

代码实现如下

mg1 = cv2.imread(r'C:\Users\admin\Desktop\1.jpg')
img2 = cv2.imread(r'C:\Users\admin\Desktop\2.jpg')
img2_mask = cv2.imread(r'C:\Users\admin\Desktop\2_mask.png')
#将img2_mask 以0 padding到img1的大小
img2_mask = cv2.copyMakeBorder(img2_mask,0,img1.shape[0]-img2_mask.shape[0],0,img1.shape[1]-img2_mask.shape[1],cv2.BORDER_CONSTANT,value=0)
#将img2 以0 padding到img1的大小
img2 = cv2.copyMakeBorder(img2,0,img1.shape[0]-img2.shape[0],0,img1.shape[1]-img2.shape[1],cv2.BORDER_CONSTANT,value=0)
img1[img2_mask == 255] = img2[img2_mask == 255]
cv2.imshow('img1',img1)
cv2.waitKey(0)

 3.cv2.seamlessClone

我们先上效果图,可以看到合成效果图比之前都好了很多,也自然了很多,这是就是泊松融合,但当然如果你的mask画的越精细,效果就越优秀

 代码如下

img1 = cv2.imread(r'C:\Users\admin\Desktop\1.jpg')
img2 = cv2.imread(r'C:\Users\admin\Desktop\2.jpg')
img2_mask = cv2.imread(r'C:\Users\admin\Desktop\2_mask.png')
img = cv2.seamlessClone(img2,img1,img2_mask,(150,230),cv2.NORMAL_CLONE)
cv2.imshow('img',img)
cv2.waitKey(0)
 cv2.seamlessClone这个函数具体的使用方法可以参考以下链接

Seamless Cloning using OpenCV ( Python , C++ ) | (learnopencv.com)icon-default.png?t=N5K3https://learnopencv.com/seamless-cloning-using-opencv-python-cpp/好了,目前应该还有比泊松融合更加优秀的图片融合方法,可能ps上就是用的这个算子吧,不过ps应该已经进入了AIGC时代了,这中小卡拉米的技术应该看不上了吧。

好了,已经很久没写博客了,写起来还是感觉有点累的,最后也不知道到底有没有人看,这种文章感觉会淹没了,毕竟没几行代码,大家估计不过瘾

至此,敬礼,salute!!!!

老规矩,上咩咩图

 

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

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

相关文章

软件测试技能,JMeter压力测试教程,监听器之每秒事务数与响应时间(十四)

前言 压测的时候,我们会经常关注2个重要的指标 TPS 和 RT TPS:每秒处理的事务数(Transactions per Second),jmeter的Throughput为吞吐量(请求数/秒) RT:响应时间(Reponse Time),从…

西亚文明的时空概念与历史上的文明形态

“西亚”这个地理概念主要指的是今日土耳其、伊朗、伊拉克、叙利亚、黎巴嫩、约旦、以色列和沙特等阿拉伯半岛国家所在的地区。若以地理区域来划分,与西亚文明比较密切的区域主要有:小亚细亚(今土耳其)、两河流域(今伊…

n.moduleList 和Sequential的解析与对比

n.moduleList 和Sequential的解析与对比 1.nn.ModuleList2.nn.Sequential3、nn.Sequential与nn.ModuleList的区别4、使用场景 1.nn.ModuleList 2.nn.Sequential 3、nn.Sequential与nn.ModuleList的区别 4、使用场景

汇编输入int 16h

int 16h 读入缓冲区ASCII码 检测点17.1 int 16h会设置if1 assume cs:code code segment start:mov ah,0int 16hmov ah,1cmp al,rje redcmp al,gje greencmp al,bje bluejmp sret red:shl ah,1 green:shl ah,1 blue:mov bx,0b800hmov es,bxmov si,1mov cx,2000 s: mov byte ptr…

mysql 基础架构与组件

基础架构 下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的。 先简单介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图。 连接器: 身份认证和权限相关(登录 MySQL 的时候)。查询缓存: 执行查…

Docker安装mysql8-超详细、每步都有截图

1.下载mysql8镜像(版本根据自己选择:这里是8.0.20) docker pull mysql:8.0.202.启动镜像 docker run -p 3307:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD123456 -d mysql:8.0.20这里特殊的地方只是说明一下、对每个参数有个了解。没其他实…

webassembly添加调试

本文主要参考:webassembly下C调试 一、安装扩展程序 如果有条件的:DevTools下载 使用第三方Chrome扩展插件搜索下载网站地址 ,搜索DWARF下载。 二、使用扩展程序 解压安装包后,直接将crx文件拖入到web浏览器上,如果…

vue element-ui的<el-tag>实现文字超过自动换行

目录 前言 解决方法 前言 今天我在使用element-ui的<el-tag>标签&#xff0c;但我发现一个问题&#xff0c;当我字体过多的时候&#xff0c;会出现这样的情况&#xff1a; 文字远远超出了蓝色框的宽度&#xff0c;那么如何解决呢&#xff1f; 解决方法 .el-tag{white…

VSCode RESTClient 返回结果中文乱码

VSCode RESTClient 返回结果中文总是显示为乱码 &#xff08;其实是 unicode 方式&#xff09; 进入设置 – 扩展 – REST Client &#xff0c; 找到 Rest-clien&#xff1a; DecodeEscaped Unicode Charactors &#xff0c;勾选上即可&#xff01; 再来运行就出来正常的中文了…

在线PDF格式转换器推荐,小圆象PDF转换器满足您的办公需求

作为上班族&#xff0c;我们都知道在办公应用中经常使用PDF文件。PDF具有较高的内容安全性&#xff0c;并且可以在多种设备上打开和浏览而不会出现格式混乱的问题。然而&#xff0c;PDF文件的一个短板是其不易编辑。通常情况下&#xff0c;我们需要将PDF文件转换为Word文档&…

Qt控件(按钮、单选、复选、list、tree、table)

一、布局 工具栏图标文字一起显示&#xff0c;背景透明。 二、代码 widget.ui <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>Widget</class><widget class"QWidget" name"Widg…

Windows 安装 Redis

安装和配置Redis Redis的安装有两种安装形式&#xff0c;一种是安装包式&#xff0c;另一种是压缩包 注意&#xff1a;windows没有32位的&#xff0c;所以32位机器的朋友考虑换一下机器。 一、安装包式 1、windows环境下的redis需要去github上获取: https://github.com/Mic…

MATLAB matlab图像压缩程序--采用嵌入式小波零树编码算法源码

MATLAB matlab图像压缩程序--采用嵌入式小波零树编码算法源码 function varargout ezw(varargin) % EZW MATLAB code for ezw.fig % EZW, by itself, creates a new EZW or raises the existing % singleton*. % % H EZW returns the handle to a new EZW or…

【裸机开发】GPT 定时器(三) —— 使用GPT实现高精度延时

延时最简单粗暴的方式就是使用空循环来延时&#xff0c;依赖的是时钟主频&#xff08;默认是396M&#xff09;来计数&#xff0c;一旦修改了 6ull 的时钟主频&#xff0c;延时效果就会存在偏差。 因此我们可以使用 EPIT 或者 GPT 的计数功能实现高精度延时&#xff0c;EPIT 是…

电气设备无线测温技术的优势有哪些?安科瑞 许敏

摘 要&#xff1a; 无线测温技术以其安装方便灵活、测温精度高、安全可靠、环境适应性好、便于集中管理等优点&#xff0c; 解决了电气设备长期带电运行状态下的温度在线监测问题&#xff0c; 提高了电气设备的运行可靠性&#xff0c; 在电力行业得到了广泛的应用。本文主要介…

将当前conda环境导出为yaml文件

conda环境的转移和复制 conda导出已有环境&#xff0c;环境会被保存在environment.yaml文件中。 conda env export > environment.yaml 当我们想再次创建该环境&#xff0c;或根据别人提供的.yaml文件复现环境时&#xff0c;就可以通过下面的命令来复现安装环境了。 conda …

【深度学习】Stable Diffusion

Stable Diffusion原理&#xff1a; https://zhuanlan.zhihu.com/p/632866251 训练过程&#xff1a; 文生图方法&#xff1a; 图生图方法&#xff1a;

CSS实现多头像叠加ui效果

第一种实现方式 简单粗暴直接使用margin-right实现&#xff0c;缺点是第一行右侧最右边头像溢出容器&#xff0c;代码中的三行注释的代码放开后可解决这个问题。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">&…

SQLyog登录错误解决

sqlyog登录错误号码2058解决 登录本地MySQL数据库 Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\Administrator>mysql -u root -p Enter password: **** Welcome to the MySQL monitor. Commands end with ; or \…

windows10 Linux子系统 Ubuntu 文件互相访问

ubuntu 访问Windows windows的磁盘被挂载到了/mnt下&#xff0c;可以看到我的电脑的c,d,e,f盘&#xff0c; windows 访问 ubuntu 在文件夹输入\wsl$ 再点击Ubuntu-22.04,进入文件夹