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.mzph.cn/pingmian/38879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

日期时间显示网页

SweetOrange_Clock 🕘 一、简介 1、这个项目包括一个HTML文件,其中包含页面的样式和脚本。 2、页面以优雅的黑白配色为主题,突出了实用性和视觉冲击力,使得显示内容在视觉上更为突出和易于阅读。 3、这是一个日期时间显示器。通…

高通源代码版本ADK工具版本源代码release版本MDE版本介绍

0 Preface/Foreword 1 版本介绍 高通代码存放在chipcode中,网址URL:Chipcode 1.1 高通源代码版本 Bluetooth Audo芯片的高通源代码版本号(类似于分类的类名):ADK.SRC.1.0 (最新qcc307x系列及之后的芯片如…

SQL中Order by详解

在 MySQL 中,ORDER BY 语句用于对查询结果进行排序。 语法: SELECT column1, column2,... FROM table_name ORDER BY column_name [ASC | DESC];以下是对其主要部分的详细解释: column_name :指定要依据其进行排序的列名。 ASC…

Pycharm安装依赖

1. IDE集成的错误解决 鼠标悬停,点击 install 2. 配置环境 ctrlalts 3. 终端运行pip (要求有先有一个pip) 最好用最简单

NSE and KGE

NSE(Nash-Sutcliffe Efficiency): 解释:NSE 是衡量水文模型模拟结果与观测值之间拟合程度的指标。它计算模拟值与观测值之间的均方误差,并将其与观测值的方差进行比较。NSE 的取值范围为-∞至 1,值越接近 1…

切片的基础知识

文章目录 ● Slice 的底层实现原理?● array 和 Slice 的区别?● 拷贝大切片一定比小切片代价大吗?● Slice 深拷贝和浅拷贝?● 零切片、空切片、nil切片?● Slice 的扩容机制?● Slice 为什么不是线程安全…

Python进阶教程--科学计算基础软件包NumPy

NumPy(Numerical Python)是一个开源的Python库,用于科学计算。它提供了一个高性能的多维数组对象和用于处理这些数组的工具。NumPy是Python科学计算的基础库,被广泛用于数据分析、机器学习、科学计算等领域。 1.1 NumPy 概述 Nu…

C++把一个类封装成动态链接库

一、步骤 1. 创建类头文件 首先,定义你要封装的类。例如,创建一个名为MyClass的类: // MyClass.h #pragma once#ifdef MYCLASS_EXPORTS #define MYCLASS_API __declspec(dllexport) #else #define MYCLASS_API __declspec(dllimport) #end…

智能扫地机器人程序中出现的问题可以参考的解决方案

在解决智能扫地机器人程序中可能遇到的问题时,可以参考以下分点表示和归纳的解决方案: 环境感知与地图构建 ① 使用先进的传感器技术:如激光雷达、超声波和红外传感器,以提高环境感知的准确性和可靠性。 ② 优化地图构建算法&a…

AI辅助设计:如何通过机器学习革新创意工作流程

🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主 📌 擅长领域:全栈工程师、爬虫、ACM算法,大数据,深度学习 💒 公众号…

WCCI 2024开幕,横滨圣地巡礼,畅游动漫与美食的世界

惊喜!WCCI 2024开幕,横滨圣地巡礼!畅游动漫与美食的世界 会议之眼 快讯 会议介绍 IEEE WCCI(World Congress on Computational Intelligence)2024,即2024年IEEE世界计算智能大会,于6月30日至…

windows USB 设备驱动开发-Host端和Device端

Windows 中的 USB 宿主端驱动程序 下图显示了适用于 Windows 的 USB 驱动程序堆栈的体系结构框图。 此图显示了适用于 USB 2.0 和 USB 3.0 的单独 USB 驱动程序堆栈。 当设备连接到 xHCI 控制器时,Windows 加载 USB 3.0 驱动程序堆栈。 Windows 为连接到 EHCI、OHC…

星辰计划01-动态代理

会话1: 什么是动态代理? 👧 什么是代理啊?👨来来来,听我细细来说 代理这个词在不同的上下文中有不同的含义,主要可以归纳为以下几类解释: 计算机网络中的代理服务器(Proxy Server&#xff0…

跨平台Ribbon UI组件QtitanRibbon全新发布v6.7.0——支持Qt 6.6.3

没有Microsoft在其办公解决方案中提供的界面,就无法想象现代应用程序,这个概念称为Ribbon UI,目前它是使应用程序与时俱进的主要属性。QtitanRibbon是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,QtitanRibb…

Linux_生产消费模型_Block_Queue

目录 一、互斥锁 1.1 错误的抢票 1.1.1 类的成员函数与构造 1.1.2 start 函数 1.1.3 线程的回调函数 1.1.4 main 函数 1.1.5 结果 1.2 概念 1.3 相关系统调用 1.3.1 锁的创建 1.3.2 锁的初始化 1.3.2.1 动态初始化 1.3.2.2 静态初始化 1.3.3 锁的销毁 1.3.4…

看不懂懂车大爆炸,你就错过了国产小车的王炸!

咦?咋的啦?咱中国自己的汽车品牌前几天在汽车工业协会公布的数据里一跃而起,真的是威风凛凛啊!2023年咱们自家的乘用车品牌市场份额硬生生地占了个56%,这可是半壁江山啊!特别是那些10万块钱以下的家用小车&…

32.哀家要长脑子了!

1.299. 猜数字游戏 - 力扣(LeetCode) 公牛还是挺好数的,奶牛。。。妈呀,一朝打回解放前 抓本质抓本质,有多少位非公牛数可以通过重新排列转换公牛数字,意思就是,当这个数不是公牛数字时&#x…

19-Pandas merge合并操作

Pandas merge合并操作(主键合并数据) Pandas 提供的 merge() 函数能够进行高效的合并操作,这与 SQL 关系型数据库的 join用法非常相似。从字面意思上不难理解,merge 翻译为“合并”,指的是将两个 DataFrame 数据表按照指定的规则进行连接&am…

C++多态~~的两个特殊情况

目录 1.多态的概念 2.简单认识 (1)一个案例 (2)多态的两个满足条件 (3)虚函数的重写 (4)两个特殊情况 1.多态的概念 (1)多态就是多种形态; …

SQL 29 计算用户的平均次日留存率题解

问题截图如下: SQL建表代码: drop table if exists user_profile; drop table if exists question_practice_detail; drop table if exists question_detail; CREATE TABLE user_profile ( id int NOT NULL, device_id int NOT NULL, gender varchar…