Python-Opencv中图像融合[ cv2.addWeighted( ) 和 cv2.resize( ) 的应用 ]

本文介绍了如何使用Python的OpenCV库通过cv2.addWeighted()函数按权重融合图像,并结合cv2.resize()调整图像大小以确保融合前图像尺寸一致。文章详细解释了这两个函数的参数和用法,并给出了实际操作示例。

Python-Opencv中图像融合[ cv2.addWeighted( ) 和 cv2.resize( ) 的应用 ]

在图像处理中,可以将两张图片可以通过cv2.addWeighted( )按权重进行融合【注意:两张图片必须是相同shape才行,这就涉及到用cv2.resize( ) 进行对图片大小的处理】

cv2.addWeighted( )函数说明

cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) → dst

dst = src1 * alpha + src2 * beta + gamma

其中:
src1 – first input array. 【第一张图片】
alpha – weight of the first array elements. 【第一张图片的权重】
src2 – second input array of the same size and channel number as src1. 【与第一张大小和通道数相同的图片】
beta – weight of the second array elements. 【第二张图片的权重】
dst – output array that has the same size and number of channels as the input arrays.【输出,python中可以直接将dst放在前面作为输出】
gamma – scalar added to each sum.【加到每个总和上的标量,相当于调亮度】
dtype – optional depth of the output array; when both input arrays have the same depth, dtype can be set to -1, which will be equivalent to src1.depth().

cv2.resize( )函数说明

cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst

其中:
scr:原图

dsize:输出图像尺寸【注意:在一般表示中,我们用 高 × 宽 × 通道。使用cv2.resize()时,参数输入是 宽 × 高 × 通道 ,与以往操作不同,需要注意。】
fx:沿水平轴的比例因子
fy:沿垂直轴的比例因子
interpolation:插值方法

interpolation插值方法
INTER_NEAREST最近邻插值
INTER_LINEAR双线性插值(默认设置)
INTER_AREA使用像素区域关系进行重采样。 它可能是图像抽取的首选方法,因为它会产生无云纹理的结果。 但是当图像缩放时,它类似于INTER_NEAREST方法。
INTER_CUBIC4x4像素邻域的双三次插值
INTER_LANCZOS48x8像素邻域的Lanczos插值

在这里插入图片描述
上图大小为 300 × 260 ×3

在这里插入图片描述
上面图片大小为 640 × 1024 × 3

对第二幅图进行改变尺寸

import cv2 as cv

src = cv.imread("background.jpg")
# 用 cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) 修改尺寸,注意dsize在cv2.resize中的表达
background = cv.resize(src, (260, 340))
# 写入图片,修改成功
cv.imwrite("background.jpg", background)

两幅图进行融合

def contrast_brightness_demo(image1, immage2, c, b):
    dst = cv.addWeighted(image1, c, image2, 1-c, b)
    cv.imshow("addWeighted", dst)


girl = cv.imread("girl.jpg")
background = cv.imread("background.jpg")
cv.imshow("girl", girl)
cv.imshow("background", background)
contrast_brightness_demo(girl, background, 0.4, 20):
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述
初学Opencv,如有错误地方会改进地方,真诚地邀请您提出来,谢谢!
本文结束…

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值