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()函数实现图像加权叠加效果的技巧。

相关推荐
元宇宙时间3 小时前
RWA加密金融高峰论坛&星链品牌全球发布 —— 稳定币与Web3的香港新篇章
人工智能·web3·区块链
天涯海风5 小时前
检索增强生成(RAG) 缓存增强生成(CAG) 生成中检索(RICHES) 知识库增强语言模型(KBLAM)
人工智能·缓存·语言模型
lxmyzzs7 小时前
基于深度学习CenterPoint的3D目标检测部署实战
人工智能·深度学习·目标检测·自动驾驶·ros·激光雷达·3d目标检测
跟着珅聪学java7 小时前
Apache OpenNLP简介
人工智能·知识图谱
AwhiteV8 小时前
利用图数据库高效解决 Text2sql 任务中表结构复杂时占用过多大模型上下文的问题
数据库·人工智能·自然语言处理·oracle·大模型·text2sql
Black_Rock_br8 小时前
AI on Mac, Your Way!全本地化智能代理,隐私与性能兼得
人工智能·macos
☺����9 小时前
实现自己的AI视频监控系统-第一章-视频拉流与解码2
开发语言·人工智能·python·音视频
fsnine9 小时前
机器学习——数据清洗
人工智能·机器学习
小猿姐9 小时前
KubeBlocks AI:AI时代的云原生数据库运维探索
数据库·人工智能·云原生·kubeblocks
算法_小学生10 小时前
循环神经网络(RNN, Recurrent Neural Network)
人工智能·rnn·深度学习