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

相关推荐
西猫雷婶14 分钟前
python学opencv|读取图像(五十二)使用cv.matchTemplate()函数实现最佳图像匹配
人工智能·python·opencv·计算机视觉
2301_7930698218 分钟前
OpenCV 图像旋转
人工智能·opencv·计算机视觉
纠结哥_Shrek30 分钟前
基于最近邻数据进行分类
人工智能·分类·数据挖掘
kakaZhui1 小时前
【llm对话系统】大模型 Llama 源码分析之 Flash Attention
人工智能·chatgpt·aigc·llama
kakaZhui1 小时前
【llm对话系统】大模型 Llama 源码分析之并行训练方案
人工智能·chatgpt·aigc·llama
Melancholy 啊1 小时前
细说机器学习算法之ROC曲线用于模型评估
人工智能·python·算法·机器学习·数据挖掘
爱研究的小牛2 小时前
Deepseek技术浅析(二):大语言模型
人工智能·机器学习·语言模型·自然语言处理·aigc
编程武士2 小时前
OpenCV 版本不兼容导致的问题
人工智能·opencv·计算机视觉
说私域3 小时前
今日头条公域流量引流新径:开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序融合之道
人工智能·小程序
AIGC大时代3 小时前
学术方向选则与规划DeepSeek、ChatGPT和Kimi对比
论文阅读·人工智能·chatgpt·数据分析·prompt