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_CUBIC 4x4像素邻域的双三次插值
INTER_LANCZOS4 8x8像素邻域的Lanczos插值

Python-Opencv中图像融合[ cv2.addWeighted( ) 和 cv2.resize( ) 的应用 ]_第1张图片
上图大小为 300 × 260 ×3

Python-Opencv中图像融合[ cv2.addWeighted( ) 和 cv2.resize( ) 的应用 ]_第2张图片
上面图片大小为 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()

Python-Opencv中图像融合[ cv2.addWeighted( ) 和 cv2.resize( ) 的应用 ]_第3张图片
初学Opencv,如有错误地方会改进地方,真诚地邀请您提出来,谢谢!
本文结束…

你可能感兴趣的:(Python-Opencv中图像融合[ cv2.addWeighted( ) 和 cv2.resize( ) 的应用 ])