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

相关推荐
俊男无期1 分钟前
【AI入门】通俗易懂讲AI(初稿)
人工智能
喜欢吃豆35 分钟前
GraphRAG 技术教程:从核心概念到高级架构
人工智能·架构·大模型
王哈哈^_^35 分钟前
YOLOv11视觉检测实战:安全距离测算全解析
人工智能·数码相机·算法·yolo·计算机视觉·目标跟踪·视觉检测
AI浩1 小时前
FeatEnHancer:在低光视觉下增强目标检测及其他任务的分层特征
人工智能·目标检测·目标跟踪
AI technophile1 小时前
OpenCV计算机视觉实战(29)——OpenCV DNN模块
opencv·计算机视觉·dnn
深度学习lover1 小时前
<数据集>yolo航拍交通目标识别数据集<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·航拍交通目标识别
商汤万象开发者1 小时前
LazyLLM教程 | 第13讲:RAG+多模态:图片、表格通吃的问答系统
人工智能·科技·算法·开源·多模态
IT管理圈1 小时前
AI agent正在重塑组织:麦肯锡的“智能体组织“解读
人工智能