openCV实现图像融合的示例代码
1. 概念
图像融合: 两幅图片叠加在一起,形成前景背景的效果。
2. 流程
(1)读入要融合的两幅图片。
(2)把两幅图片调整到统一大小,方便下一步叠加。
(3)对两幅图片按照一定的权重相加。
(4)显示图片。img1,img2 --> resize --> cv2.addWeighted()–>show
addWeighted方法:
函数原型:
void addWeighted(InputArray class="lazy" data-src1, double alpha, InputArray class="lazy" data-src2,double beta, double gamma, OutputArray dst, int dtype=-1);
这个函数实现对输入的两幅图像进行线性系数的加权和。
第一个参数:class="lazy" data-src1,表示进行加权操作的第一个图像对象
第二个参数:double型的alpha,表示第一个图像的加权系数
第三个参数:class="lazy" data-src2,表示进行加权操作的第二个图像对象
第四个参数:double型的beta,表示第二个图像的加权系数,很多情况下,有关系 alpha+beta=1.0
第五个参数:double型的gamma,表示一个 作用到加权和后的图像上的标量,可以理解为加权和后的图像的偏移量
第六个参数:dst,表示两个图像加权和后的图像,尺寸和图像类型与class="lazy" data-src1和class="lazy" data-src2相同
3 代码
'''
图像融合(对图像加权):img1,img2 --> resize --> cv2.addWeighted() --> show
'''
import cv2
import matplotlib.pyplot as plt
# 1 read
fg = cv2.imread('fg.png', 1)
bg = cv2.imread('bg.png', 1)
fg = cv2.cvtColor(fg,cv2.COLOR_BGR2RGB)
bg = cv2.cvtColor(bg,cv2.COLOR_BGR2RGB)
# 2 resize
fg = cv2.resize(fg,(850,550),interpolation=cv2.INTER_AREA)
bg = cv2.resize(bg,(850,550),interpolation=cv2.INTER_AREA)
# 3 addWeighted
w1 = 0.8
w2 = 0.2
re = cv2.addWeighted(fg,w1,bg,w2,0)
# 4 show
plt.subplot(131)
plt.imshow(fg)
plt.title('fg')
plt.subplot(132)
plt.imshow(bg)
plt.title('bg')
plt.subplot(133)
plt.imshow(re)
plt.title('re')
plt.show()
到此这篇关于openCV实现图像融合的示例代码的文章就介绍到这了,更多相关openCV 图像融合内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341