OpenCV图像加权函数:addWeighted

embedded/2025/3/15 16:45:40/

1 addWeighted函数

在OpenCV 里,addWeighted 函数的作用是对两个图像进行加权求和,常用于图像融合、图像过渡等场景。函数如下:

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

2 参数解释

  • src1:第一个输入图像。
  • alpha:第一个输入图像的权重,取值范围是 0 到 1。
  • src2:第二个输入图像,它的大小和通道数必须与 src1 相同。
  • beta:第二个输入图像的权重,取值范围是 0 到 1。
  • gamma:标量值,添加到加权和中(通常用于亮度调整)。
  • dst:输出图像(可选参数,直接通过返回值获取)。
  • dtype:输出图像的可选深度,若未指定,则使用输入图像的深度。

该函数将两个图像按权重相加,实现图像的线性混合,其数学公式为:
d s t = α ∗ s r c 1 + β ∗ s r c 2 + γ dst = \alpha * src1 + \beta * src2 + \gamma dst=αsrc1+βsrc2+γ

3 注意

  1. 图像尺寸和通道数src1src2 必须具有相同的尺寸和通道数,否则会报错。
  2. 权重和alpha + beta 不需要等于 1,但若想实现透明度混合(如 alpha + beta = 1),需自行控制。
  3. 数据类型:若输入为 uint8 类型,结果会自动截断到 [0, 255] 范围(饱和操作)。
  4. gamma 的作用:用于调整输出图像的亮度(例如,gamma=10 会使整体亮度增加)。
    • 若 alpha + beta > 1,图像可能过曝(值被截断到 255)。
    • 若 gamma > 0,整体亮度增加;若 gamma < 0,亮度降低。
  5. cv2.add() 的区别cv2.add() 是直接相加(无权重),而 addWeighted() 允许更灵活的线性组合。

4 函数原型

def addWeighted(src1: Mat, alpha, src2: Mat, beta, gamma, dts: Mat = ..., dtype=...) 
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'"""pass

5 函数应用

  1. 图像叠加:例如,在制作幻灯片过渡效果时,就可以使用该函数实现图像的平滑过渡:通过调整 alphabeta 实现淡入淡出效果。

  2. ROI 混合:结合掩码(mask)对局部区域进行混合:

roi = img1[y:y+h, x:x+w]
blended_roi = cv2.addWeighted(roi, 0.5, img2_roi, 0.5, 0)
img1[y:y+h, x:x+w] = blended_roi

6 示例代码

代码如下:

import cv2# 读取两张图像
image1 = cv2.imread('image1.jpg')
image2 = cv2.imread('image2.png')# 定义权重
alpha = 0.7
beta = 0.3
gamma = 0# 进行加权求和
result = cv2.addWeighted(image1, alpha, image2, beta, gamma)# 显示结果
cv2.imshow("Touxiang", image1)
cv2.imshow("Zi", image2)
cv2.imshow('Weighted Image', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

通过以上代码,可以将两张图片融合,配置不同的alpha和beta值,可以得到不同融合效果。

融合前:
在这里插入图片描述
融合后:
在这里插入图片描述


http://www.ppmy.cn/embedded/172813.html

相关文章

Qt-开发设置窗体透明效果

一、前言 在音频开发中&#xff0c;窗体多半为半透明、圆角窗体&#xff0c;如下为Qt 5.5 VS2013实现半透明方法总结。 二、半透明方法设置 1、窗体及子控件都设置为半透明 1&#xff09;setWindowOpacity(0.8);//参数范围为0-1.0&#xff0c;通过QSlider控件做成透明度控制条…

证券交易系统的流程

证券交易系统的流程通常包括账户开立、资金存入、下单交易、撮合成交、清算交割和资金划转等环节。以下是证券交易的完整流程&#xff0c;按照时间顺序排列&#xff1a; 一、开户 在进行证券交易前&#xff0c;投资者需要开设以下账户&#xff1a; 证券账户&#xff08;由证券…

Mac M1 切换Java版本

下载地址&#xff1a;Java 8, 11, 17, 21, 23 Download for Linux, Windows and macOS 安装 Java 8&#xff1a;下载完成后&#xff0c;双击 .dmg 文件&#xff0c;接着在打开的窗口中双击 .pkg 文件&#xff0c;按照安装向导完成安装。 vim ~/.bashrcexport JAVA_8_HOME/Lib…

使用服务器如何DNS呢

莱卡云服务器 DNS 配置指南 一、配置云服务器本地 DNS ‌修改网络配置文件‌ ‌Ubuntu/Debian‌&#xff1a; bashCopy Code sudo nano /etc/network/interfaces # 添加或修改 DNS 配置 dns-nameservers 8.8.8.8 8.8.4.4 *&#xff08;保存后重启网络服务&#xf…

空洞卷积(膨胀卷积)(Dilated Convolution / Atrous Convolution)

膨胀卷积的基础操作图解&#xff1a; 卷积之后的尺寸公式&#xff1a; WH 是输入尺寸 Fw​Fh​ 是卷积核尺寸 P 是填充大小 S 是步长 R 是膨胀率 ⌊x⌋ 表示向下取整 实例&#xff08;膨胀率不同&#xff09;&#xff1a; 输入尺寸&#xff1a;W8H8 卷积核尺寸&#xff…

NFC碰一碰发视频-nfc碰一碰发视频拓客系统 实体商家碰一碰发视频引流获客

服务器配置确认&#xff1a;根据预计的用户访问量和系统负荷&#xff0c;选择适当的服务器规格。 环境设置&#xff1a;在选定的服务器上安装操作系统、数据库管理系统及所需的依赖库&#xff0c;例如Linux发行版、MySQL数据库和Nginx服务器软件。 代码获取&#xff1a;从官方…

硬件工程师入门教程(四)

1.比较器是什么 比较器有两个输入信号V和V-&#xff1b;以及一个输出信号Vout 当V>V-时&#xff0c;Vout为高电平&#xff1b;&#xff08;约等于Vcc&#xff09;当V<V-时&#xff0c;Vout为低电平&#xff1b;&#xff08;约等于GND&#xff09; 2.比较器什么时候加上…

SEO优先级矩阵:有限资源下的ROI最大化决策模型

SEO优先级矩阵&#xff1a;有限资源下的ROI最大化决策模型 引言 在数字营销领域&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;是提升网站流量和转化率的关键策略之一。然而&#xff0c;SEO的实施往往需要投入大量的时间和资源&#xff0c;尤其是在资源有限的情况下&a…