python学opencv|读取图像(五十)使用addWeighted()函数实现图像加权叠加效果

【1】引言

前序学习进程中,学习了图像互相叠加的不同操作方法,包括add()函数直接叠加BGR值和使用bitwise()函数对BGR值进行按位计算叠加等,相关文章链接包括且不限于:

python学opencv|读取图像(四十二)使用cv2.add()函数实现多图像叠加-CSDN博客

python学opencv|读取图像(四十九)使用cv2.bitwise()系列函数实现图像按位运算-CSDN博客

实际上,有时候的需求不一定是两张图像完整叠加,而可能是更偏向某一张图像,这就需要调用addWeighted()函数实现图像加权叠加效果。

【2】官网教程

点击下方链接,直达官网对addWeighted()函数的说明网页:

OpenCV: Operations on arrays

官网页面为:

++图1 addWeighted()函数的说明网页++

官网也给出了addWeighted()函数的参数说明:

void cv::addWeighted (

InputArray src1, #输入图像1

double alpha, #图像1权重

InputArray src2, #输入图像2

double beta, #图像2权重

double gamma, #权重的综合叠加量

OutputArray dst, #输出图像

int dtype = -1 ) #输出图像的深度,为默认值,暂无需关注

【3】代码测试

首先引入相关模块和初始图像:

python 复制代码
import cv2 as cv # 引入CV模块
import numpy as np #引入numpy模块

# 读取图片
srcx = cv.imread('srcx.png') #读取图像srcx.png
srcp = cv.imread('srcp.png') #读取图像srcp.png
rows,cols,cans=srcx.shape #读取图像属性
srcp=cv.resize(srcp,(rows,cols), interpolation=cv.INTER_CUBIC) #统一图像大小

然后对图像进行加权叠加:

python 复制代码
#调用cv2.addWeighted()函数进行加权叠加
src=cv.addWeighted(srcx,0.6,srcp,0.2,0.5) #调用cv2.addWeighted()函数进行加权叠加

之后在屏幕显示和保存图像:

python 复制代码
#显示和保存图像
cv.imshow('src',src) #显示图像
cv.imshow('srcx',srcx) #显示图像
cv.imshow('srcp',srcp) #显示图像
cv.imwrite('src.png',src) #保存图像
cv.waitKey()  # 图像不关闭
cv.destroyAllWindows()  # 释放所有窗口

代码使用的初始图像分别为:

++图2 第一张图像srcx.png++

++图3 第二张图像srcp.png++

++图4 加权叠加的图像src.png++

由图2至图4可见,经过加权叠加后,两张图像熔合在一起。

此时的完整代码为:

python 复制代码
import cv2 as cv # 引入CV模块
import numpy as np #引入numpy模块

# 读取图片
srcx = cv.imread('srcx.png') #读取图像srcx.png
srcp = cv.imread('srcp.png') #读取图像srcp.png
rows,cols,cans=srcx.shape #读取图像属性
srcp=cv.resize(srcp,(rows,cols), interpolation=cv.INTER_CUBIC) #统一图像大小

#调用cv2.addWeighted()函数进行加权叠加
src=cv.addWeighted(srcx,0.6,srcp,0.2,0.5) #调用cv2.addWeighted()函数进行加权叠加

#显示和保存图像
cv.imshow('src',src) #显示图像
cv.imshow('srcx',srcx) #显示图像
cv.imshow('srcp',srcp) #显示图像
cv.imwrite('src.png',src) #保存图像
cv.waitKey()  # 图像不关闭
cv.destroyAllWindows()  # 释放所有窗口

【4】代码修改

进一步修改代码,交换权重,调高最后的综合叠加量:

python 复制代码
src=cv.addWeighted(srcx,0.2,srcp,0.6,3) #调用cv2.addWeighted()函数进行加权叠加

此时获得的叠加效果为:

++图5 加权叠加的图像src.png++

显然,不同的权重会改百年图像混合的主体,增大最后的综合叠加量,图像会变亮。

【5】细节说明

代码中调用了图像尺寸修改函数,相关函数的说明在之前也介绍过,可以点击链接回忆:

python学opencv|读取图像(三)放大和缩小图像_py opencv图像缩放-CSDN博客

【6】总结

掌握了使用python+opencv调用addWeighted()函数实现图像加权叠加效果的技巧。

相关推荐
一只废狗狗狗狗狗狗狗狗狗6 小时前
机器学习与深度学习理论入门概述
人工智能·深度学习·机器学习
算力百科小智6 小时前
NVIDIA A100 GPU:基于 Ampere 架构的选型方法论
人工智能·架构·智星云·gpu算力租用·a100显卡
秉寒-CHO6 小时前
从 PyCharm 到 Cursor:我的 LLM 项目 AI 编程工具链全解析
ide·人工智能·pycharm
弋痕6 小时前
LangChain 实现 Skill 框架
人工智能
永霖光电_UVLED6 小时前
新唐科技宣布402nm波长、4.5W输出功率的紫光激光大规模生产
人工智能·科技
算力百科小星6 小时前
2026 GPU算力平台租用详解(阿里云、腾讯云与智星云)
人工智能·智星云·gpu算力租用
南讯股份Nascent6 小时前
2026年零售行业CRM系统选型指南
人工智能·零售
bruce1286 小时前
编码智能体赋能后端全栈开发经验分享
人工智能·经验分享·agi
suke7 小时前
Claude Opus 4.7 来了:代码能力暴涨,还能“看见”更多细节,关键是没涨价
人工智能·ai编程·claude
GuangHeAI_ATing7 小时前
军工企业数据存储如何保障?横向实测三款航天级SSD的可靠性与性能(含湖南天硕G55系列技术拆解)
大数据·数据库·人工智能