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

news/2024/12/4 17:29:58/

上次写了一篇关于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.ppmy.cn/news/633767.html

相关文章

传奇游戏源码 Linux版本

游戏的要求系统要求系统要求liunx6.9系统 因为游戏是java对服务器配置要求比较高 如果您的资金够宽裕可以选择直接购买 liunx6.9系统 8核16G 240G/320G硬盘 10兆以上宽带的服务器 这样可以直接保证游戏的稳定新 如果不想出那么多钱 可以一步一步来 开新区用4核4G 120G硬盘 5M宽…

什么叫裸机

裸机,指没有配置操作系统及其他软件的电子计算机。 电脑裸机: 1,只有硬件部分,没有安装任何软件系统的电脑。 2,主板,硬盘,显卡等必备硬件不安装在机箱内。 3,没有杀软的叫做裸机…

Legend of Mir(传奇)官方源码学习3、服务端程序初始化过程

一、窗体事件 整个服务端界面只有2个事件,一个SMain_Load一个SMain_FormClosing,一个负责初始化,一个负责程序关闭保存 SMain_Load事件 private void SMain_Load(object sender, EventArgs e) {EditEnvir.LoadDB();Envir.Start();AutoResiz…

怎么预防做的独家传奇版本被盗?

不知道开服的时候你是否有遇到这样的情况,经过漫长的时间辛辛苦苦做出来的独家版本,没有开多久,发现市面上有一模一样的,跟自己做的就是一个复制版,甚至里面很多细节都是一样的。到底怎么个情况呢?你没有猜…

Legend of Mir(传奇)官方源码学习1、运行游戏

对比服务端和客户端的地图文件,说明用的是一套地图数据 这样服务端可以和客户端用同一份地图文件 不过自己编译的程序,运行经常出现,经过确认,并不是客户端文件发生了改变,而是服务端认为客户端版本不正确了。 只需要…

imx6ull 裸机 (运行恩智浦官方裸机代码(IAR)工程) 方法简介

文章目录 前言一、uboot go/bootelf 命令(工具)二、目标码加载方式简介1.通过loady加载bin/elf文件到DDR空间2.通过网口加载bin/elf文件到DDR空间 三、启动目标码方法简介bin / elf 目标码文件格式区别 1.bin文件格式启动方式2.elf文件格式启动方式 四、…

传奇开服需要多少钱?传奇开服技术要学多久?

传奇开服需要多少钱 作为经典怀旧游戏,传奇赢得了许多人的青睐,在这个科技的时代,玩服已经满足不了了,多数人会选择自己开服,那么开服需要准备什么呢,接下来明杰给大家分享一下开服经验 首先想要开服&…

裸机

裸机 还未安装任何软件系统的电脑叫做裸机。 品牌机 品牌机新电脑刚买回来时,已经安装初始操作系统,可以直接使用。 DIY 什么是DIY?各大厂商只要把各自的电脑设计为统一的接口方式,使得各自的配件可以通用更换。 DIY 组装的电…