【opencv 学习笔记 07 addweighted() 函数】

addweighted()

import cv2
import numpy as np

img = cv2.imread('img.jpg')
cv2.namedWindow('Image', cv2.WINDOW_AUTOSIZE)
cv2.imshow('Image', img)
# 生成一个黑色的图像 大小和类型与源图像一样
img1 = np.zeros(img.shape, dtype=img.dtype)
cv2.imshow('Image1', img1)
# 数组后面直接加上255 则变为全白图像
img_white = img1 + 255
cv2.imshow('Image_white', img_white)
# 这个函数就相当于
src = cv2.addWeighted(img, 0.2, img1, 0.8, 0)
cv2.imshow('src', src)
src2 = cv2.addWeighted(img, 0.2, img_white, 0.8, 0)
cv2.imshow('src2', src2)
# 第五个参数是,按照权重加和之后 再给图片添加的数值,如果超过255 则全白
src3 = cv2.addWeighted(img, 0.2, img1, 0.8, 100)
cv2.imshow('src3', src3)
cv2.waitKey(0)
cv2.destroyAllWindows()

函数原型

def addWeighted(src1, alpha, src2, beta, gamma, dst=None, dtype=None): # real signature unknown; restored from __doc__
    """
    addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) -> dst
    .   @brief Calculates the weighted sum of two arrays.
    .   
    .   The function addWeighted calculates the weighted sum of two arrays as follows:
    .   \f[\texttt{dst} (I)= \texttt{saturate} ( \texttt{src1} (I)* \texttt{alpha} +  \texttt{src2} (I)* \texttt{beta} +  \texttt{gamma} )\f]
    .   where I is a multi-dimensional index of array elements. In case of multi-channel arrays, each
    .   channel is processed independently.
    .   The function can be replaced with a matrix expression:
    .   @code{.cpp}
    .       dst = src1*alpha + src2*beta + gamma;
    .   @endcode
    .   @note Saturation is not applied when the output array has the depth CV_32S. You may even get
    .   result of an incorrect sign in the case of overflow.
    .   @param src1 first input array.
    .   @param alpha weight of the first array elements.
    .   @param src2 second input array of the same size and channel number as src1.
    .   @param beta weight of the second array elements.
    .   @param gamma scalar added to each sum.
    .   @param dst output array that has the same size and number of channels as the input arrays.
    .   @param 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().
    .   @sa  add, subtract, scaleAdd, Mat::convertTo
    """

结果展示

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: OpenCVaddWeighted函数是一种图像加权叠加的方法,可以将两个图像按照一定的比例进行混合,生成一个新的图像。该函数的参数包括两个输入图像、两个图像的权重系数以及输出图像。其,权重系数可以控制两个图像在混合过程的比例,输出图像的像素值则是两个输入图像像素值的加权和。该函数在图像处理广泛应用,例如图像融合、图像增强等方面。 ### 回答2: OpenCVaddWeighted函数是一种图像混合运算的方法。它可以将两个图像进行加权相加,生成一个新的图像。 addWeighted函数的原型为: void cv::addWeighted( cv::InputArray src1, // 第一个输入图像 double alpha, // 第一个输入图像的权重系数 cv::InputArray src2, // 第二个输入图像 double beta, // 第二个输入图像的权重系数 double gamma, // 结果图像的亮度调整参数 cv::OutputArray dst // 输出图像 ); 其,src1和src2是输入的两个图像,alpha和beta分别是它们的权重系数,gamma是结果图像的亮度调整参数,dst是输出的混合图像。 addWeighted函数的算法可以表达如下: dst = src1 * alpha + src2 * beta + gamma; 其,运算符 * 表示对应像素点的乘法运算。 通过调整alpha和beta的值,可以控制源图像的权重,从而实现不同程度上的图像融合效果。此外,通过调整gamma的值,可以对结果图像的亮度进行调整。 总之,OpenCVaddWeighted函数为我们提供了一种简单而灵活的图像混合运算方式,可以用于很多图像处理、特效实现和图像融合等应用场景。 ### 回答3: opencvaddWeighted函数是一个图像混合函数,可用于将两个图像按照一定的权重进行混合。函数原型如下: void cv::addWeighted( InputArray src1, // 第一个输入图像 double alpha, // 第一个输入图像的权重 InputArray src2, // 第二个输入图像 double beta, // 第二个输入图像的权重 double gamma, // 亮度调节值 OutputArray dst // 输出图像 ) 其,src1、src2为输入图像(可以为灰度图像、彩色图像或带alpha通道的图像),alpha和beta为两个输入图像的权重,gamma用于亮度调节,dst为输出图像。 addWeighted函数会根据给定的权重将两个输入图像进行混合生成输出图像,公式为: dst = src1 * alpha + src2 * beta + gamma 其,alpha和beta的取值范围为0到1,表示不同图像的权重比例,alpha与beta之和要小于等于1。gamma的取值范围为0到255,表示亮度调节值,用于调整输出图像的亮度。 混合操作的结果将反映出两个输入图像在每个像素位置的权重贡献。当alpha和beta均为0时, 输出图像的对应像素值等于gamma。当alpha和beta均为1时,输出图像的对应像素值等于两个输入图像对应像素值的和再加上gamma。 addWeighted函数在图像处理广泛使用,常用于图像叠加、图像融合、图像过渡等应用场景。它可以实现不同权重的图像融合,使得合成后的图像达到一定的效果,如调整透明度、颜色均衡等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值