OpenCV学习之cv2.addWeighted函数

OpenCV学习之cv2.addWeighted函数

一、简介

在图像处理和计算机视觉中,图像融合是一种常见的操作。cv2.addWeighted 函数是 OpenCV 提供的用于对两幅图像进行加权融合的函数,通过对图像像素值进行线性加权和偏移,可以实现图像的混合和过渡效果。该函数常用于图像的透明叠加、图像特效等场景。

二、语法

cv2.addWeighted 函数的基本语法如下:

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

三、参数

  • src1:第一幅输入图像。
  • alpha:第一幅图像的权重。
  • src2:第二幅输入图像。
  • beta:第二幅图像的权重。
  • gamma:加到最终结果上的标量值。
  • dst(可选):输出图像。
  • dtype(可选):输出图像的数据类型。

四、示例

下面通过几个简单的例子来演示 cv2.addWeighted 的用法。

示例 1:基本图像加权融合
import cv2
import numpy as np

# 创建两幅简单的图像
img1 = np.zeros((300, 300, 3), dtype=np.uint8)
img1[:] = (255, 0, 0)  # 蓝色图像

img2 = np.zeros((300, 300, 3), dtype=np.uint8)
img2[:] = (0, 255, 0)  # 绿色图像

# 使用 cv2.addWeighted 进行加权融合
alpha = 0.5
beta = 0.5
gamma = 0
result = cv2.addWeighted(img1, alpha, img2, beta, gamma)

# 显示结果
cv2.imshow('Weighted Image', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个例子中,我们创建了两幅简单的图像,一幅是蓝色的,另一幅是绿色的。通过 cv2.addWeighted 函数以相同的权重(0.5)对两幅图像进行融合,得到的结果图像是蓝色和绿色的混合图像。

示例 2:不同权重的图像加权融合
import cv2
import numpy as np

# 创建两幅简单的图像
img1 = np.zeros((300, 300, 3), dtype=np.uint8)
img1[:] = (255, 0, 0)  # 蓝色图像

img2 = np.zeros((300, 300, 3), dtype=np.uint8)
img2[:] = (0, 255, 0)  # 绿色图像

# 使用 cv2.addWeighted 进行加权融合
alpha = 0.7
beta = 0.3
gamma = 0
result = cv2.addWeighted(img1, alpha, img2, beta, gamma)

# 显示结果
cv2.imshow('Weighted Image', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个例子中,我们对蓝色图像和绿色图像使用不同的权重(0.7 和 0.3)进行融合,得到的结果图像中蓝色的比例更高,绿色的比例较低。

示例 3:加上偏移值的图像加权融合
import cv2
import numpy as np

# 创建两幅简单的图像
img1 = np.zeros((300, 300, 3), dtype=np.uint8)
img1[:] = (255, 0, 0)  # 蓝色图像

img2 = np.zeros((300, 300, 3), dtype=np.uint8)
img2[:] = (0, 255, 0)  # 绿色图像

# 使用 cv2.addWeighted 进行加权融合,并加上偏移值
alpha = 0.5
beta = 0.5
gamma = 50  # 偏移值
result = cv2.addWeighted(img1, alpha, img2, beta, gamma)

# 显示结果
cv2.imshow('Weighted Image with Gamma', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个例子中,我们在对两幅图像进行加权融合时,还加上了一个偏移值(50),结果图像的亮度整体提高了。

五、注意事项

  1. 输入图像的尺寸和类型匹配:
    • 两个输入图像 src1src2 的尺寸(宽度和高度)必须相同。如果尺寸不同,需要先进行图像的尺寸调整。
    • 输入图像的数据类型必须相同,通常是 uint8 类型(8位无符号整数)。如果数据类型不同,需要先进行数据类型转换。
  2. 权重参数的范围:
    • 权重参数 alphabeta 应该是浮点数,且通常在 0 到 1 的范围内。它们的值决定了每幅图像在融合结果中的比例。权重值的总和不一定需要为1,但如果总和大于1,可能会导致结果图像的某些像素值溢出。
  3. 偏移值 gamma 的使用:
    • 偏移值 gamma 是一个常数,会被加到融合结果的每一个像素上(相当于偏置),用于调整图像的整体亮度。gamma 可以是正数或负数,根据需要进行调整。
  4. 结果图像的数据类型:
    • 输出图像的默认数据类型与输入图像相同。如果需要更改数据类型,可以使用 dtype 参数进行指定。
  5. 输入图像的通道数:
    • 输入图像通常为三通道(RGB)图像。如果是单通道(灰度)图像,同样适用,但确保两幅输入图像的通道数相同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/762867.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows/Linux/Mac 系统局域网服务发现协议及传输速度比较

简介 分析 / 验证对比常见局域网服务发现协议在 Windows/Linux/Mac 等不同系统下的支持和表现 在使用不同系统的智能硬件时,如常见的树莓派 / Openwrt 路由器 / Debian/Fedora/Windows/Mac 等系统是,系统间相互发现以及网络共享本应是系统的基础服务&a…

【RT摩拳擦掌】基于RT106L/S语音识别的百度云控制系统

【RT摩拳擦掌】基于RT106L/S语音识别的百度云控制系统 一 文档简介二 平台构建2.1 使用平台2.2 百度智能云2.2.1 物联网核心套件2.2.2 在线语音合成 2.3 playback语音数据准备与烧录2.4 开机语音准备与添加2.5 唤醒词识别词命令准备与添加 三 代码准备3.1 sln-local/2-iot 代码…

黑马点评下订单-小程序下单没问题但是Postman发送请求失败了,返回401

经过多方探索,这个✓8错误就是由于黑马点评使用了拦截器,我们直接发送请求是会被拦截器拦截下来的,我给出的解决方案是通过配置Postman解决,方法很简单! 解决方案 右边的value写上Redis里面登录所用token值就可以了…

【TB作品】打地鼠游戏,ATMEGA16单片机,Proteus仿真 打地鼠游戏

11个按键LCD1602显示器9个灯蜂鸣器打地鼠小游戏就是九个灯泡,对应九个按键,灯泡有红黄蓝,每间隔一会儿就会亮一个灯,代表地鼠冒出来,按一下按键让灯泡灭掉代表打地鼠,红的三分,黄的两分&#xf…

开发自动发送国际短信的工具需要用到哪些源代码?

在当今数字化、全球化的时代,国际短信作为一种高效、便捷的沟通方式,在各个领域发挥着越来越重要的作用。 开发一款能够自动发送国际短信的工具,不仅能够帮助企业实现精准营销、客户服务,还能为个人提供便捷的跨国交流方式。 本…

手把手教你搭建PyTorch环境:MindStudio中PyTorch模型开发实战

本次实验的视频链接如下:​https://www.bilibili.com/video/BV1iA4y1f7o1/ 本次实验在MindStudio上进行,请先按照 教程 配置环境,安装MindStudio。 ​ MindStudio的是一套基于华为自研昇腾AI处理器开发的AI全栈开发工具平台,该IDE上功能很多…

Leetcode.1735 生成乘积数组的方案数

题目链接 Leetcode.1735 生成乘积数组的方案数 rating : 2500 题目描述 给你一个二维整数数组 q u e r i e s queries queries ,其中 q u e r i e s [ i ] [ n i , k i ] queries[i] [n_i, k_i] queries[i][ni​,ki​] 。第 i i i 个查询 q u e r i e s [ i …

AI绘画工具Midjourney:和Discord互相成就

前言 提到文生图,很多人都会想到植根于根植于Discord社区的Midjourney,本篇文章就基于作者的使用体验思考,并结合了Discord来对Midjourney进行探讨,感兴趣的朋友一起来看看吧。 如果要说现在最火的文生图,不得不说到Mi…

深入理解 “androidx.databinding.DataBindingUtil“ 细节和使用

介绍 数据绑定(Data Binding)是 Android 中的一个强大功能,它允许你使用声明性格式而不是编程方式将布局中的 UI 组件绑定到应用中的数据源。androidx.databinding.DataBindingUtil 类是一个工具类,它提供了用于处理数据绑定的方…

单片机语音识别控制蓝牙通信

基于单片机语音识别控制&蓝牙控制 1、Arduino单片机语音控制1.1 直连1.2 蓝牙无线连接1.3 部分核心程序1.4 实物演示 2、51单片机语音控制2.1 直连2.2 蓝牙无线连接2.3 部分核心程序2.4 实物演示 3、STM32单片机语音控制3.1 直连3.2 蓝牙无线连接3.3 部分核心程序3.4 实物演…

数据结构之“刷链表题”

🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:数据结构 目录 前言 一、相交链表 题目链接 大致思路 代码实现 二、环形链表1 题目链接 大致思路 代码实现 三、环形链表2 题目链接 大致思路 代码实…

RANSAC空间圆拟合实现

由初中的几何知识我们可以知道,确定一个三角形至少需要三个不共线的点,因此确定一个三角形的外接圆至少可用三个点。我们不妨假设三个点坐标为P1(x1,y1,z1),P2(x2,y2,z2),P3(x3,y3,z3)。 圆方程的标准形式为: (xi-x)2(yi-y)2R2 (1…

8605 删数问题

这是一个典型的贪心算法问题。我们可以从高位开始,找到第一个比后面数字大的数字,删除它,然后继续这个过程,直到删除k个数字。如果我们已经删除了k个数字,但是还没有找到一个比后面数字大的数字,那么我们就…

专题六:Spring源码之初始化容器BeanFactory

上一篇咱们通过一个例子介绍初始化容器上下文相关内容,并通过两个示例代码看到了Spring在设计阶段为我预留的扩展点,和我们应该如何利用这两个扩展点在Spring初始化容器上下文阶段为我们提供服务。这一篇咱们接着往下看。 老这样子下回到refresh方法上来…

首款内置电源的迷你主机,不到千元的办公神器 | 零刻EQ13评测报告

零刻首款内置电源的迷你主机,不到千元的办公神器 | 零刻EQ13评测报告 哈喽小伙伴们好,我是Stark-C~ 众所周知,零刻作为目前国产迷你主机第一品牌,旗下系列众多,产线丰富,比如说它有针对游戏玩家的性能主机…

Transformer动画讲解 - 工作原理

Transformer模型在多模态数据处理中扮演着重要角色,其能够高效、准确地处理包含不同类型(如图像、文本、音频、视频等)的多模态数据。 Transformer工作原理四部曲:Embedding(向量化)、Attention(注意力机制)、MLPs(多层感知机)和Unembedding(模型输出)。 阶段一:…

JS数据处理(冒泡寻找对象里面有个Key相同的值并处理相关数据)

1.需要处理成的数据格式 [{ mpptNumber: 1, list:[{checked: false,pvEnableStatus: 0,pvSerialNumber: 1,},{checked: false,pvEnableStatus: 0,pvSerialNumber: 2,}] }, { mpptNumber: 2, list:[{checked: false,pvEnableStatus: 0,pvSerialNumber: 1,},{checked: false,pvE…

Cosine 余弦相似度并行计算的数学原理与Python实现

背景 Cosine 我在LLM与RAG系列课程已经讲了很多次了,这里不在熬述,它在LLM分析中,尤其是在语义相似度的计算中至关重要,在dot attention机制中,也会看到他的身影。这里讲的是纯数学上的运算与python是如何运用相关库进…

Ubuntu机器安装rdkit指定版本,通过conda安装不需要make,有手就行。

阿里云购买Ubuntu 22.0机器 IP没错,访问外网没问题 图片中的命令放在下面了。 useradd test-user -s /bin/bash mkdir /home/test-user chown -R test-user: /home/test-user passwd test-uservi /etc/sudoers wget -c https://repo.anaconda.com/archive/Anacon…

全同态加密在大模型应用中应用

密码学简介 上文的图例基本展示了常见加密体系。加密体系,如果用比较正式的描述方法,无疑是做了三件事: 首先,通过一个生成算法 𝐾𝑒𝑦𝐺𝑒𝑛(1&#x1d70…