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

server/2025/2/1 8:29:49/

【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】代码测试

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

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()  # 释放所有窗口

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

图2 第一张图像srcx.png

图3 第二张图像srcp.png 

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

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

此时的完整代码为:

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】代码修改

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

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


http://www.ppmy.cn/server/164020.html

相关文章

精准化糖尿病知识问答(LLM+机器学习预测模型)

精准化糖尿病知识问答(LLM机器学习预测模型) 关键词:精准化;糖尿病(慢病) 这里主要是对APP部署途径的叙述,在这之前讨论两个问题: 慢性疾病适用什么样的预测模型。对于糖尿病等慢病…

Linux 内核中的高效并发处理:深入理解 hlist_add_head_rcu 与 NAPI 接口

在 Linux 内核的开发中,高效处理并发任务和数据结构的管理是提升系统性能的关键。特别是在网络子系统中,处理大量数据包的任务对性能和并发性提出了极高的要求。本文将深入探讨 Linux 内核中的 hlist_add_head_rcu 函数及其在 NAPI(网络接收处理接口)中的应用,揭示这些机制…

玄机靶场--第二章 日志分析-apache日志分析

文章目录 第二章 日志分析-apache日志分析1、提交当天访问次数最多的IP,即黑客IP:2、黑客使用的浏览器指纹是什么,提交指纹的md5:3、查看包含index.php页面被访问的次数,提交次数:4、查看黑客IP访问了多少次…

PDFPatcher,免费开源的PDF编辑利器

在日常工作和生活中,PDF文件因其不可更改性和跨平台兼容性,成为最常用的文档格式之一。然而,PDF的编辑和修改往往存在诸多不便。传统的PDF编辑软件不仅需要付费订阅,而且功能复杂,使用起来有一定难度。今天&#xff0c…

深度优先搜索(DFS)算法模板

深度优先搜索(DFS,Depth-First Search)是一种用于遍历或搜索树或图的算法。DFS 从起始节点开始,尽可能深入每一条分支,直到无法继续为止。然后回溯到上一个节点,继续未访问的其他分支,直到所有节…

51单片机开发:独立键盘实验

实验目的:按下键盘1时,点亮LED灯1。 键盘原理图如下图所示,可见,由于接GND,当键盘按下时,P3相应的端口为低电平。 键盘按下时会出现抖动,时间通常为5-10ms,代码中通过延时函数delay…

布林线(BOLL)

BOLL上轨的意义 BOLL指标由上轨、中轨和下轨组成,上轨是股价运行的“压力线”,当股价突破上轨时,通常意味着市场处于极度强势的上涨行情。但如果股价在突破上轨后无法持续维持在上轨上方,而是开始回落并跌破上轨,这往往…

Vue 3 项目结构及核心文件

Vue 3 是一个流行的前端框架,它提供了一种高效、灵活的方式来构建用户界面。在这篇博客中,我们将深入探讨一个标准 Vue 3 项目的目录结构,并详细介绍 main.ts 和 App.vue 这两个核心文件。 目录结构 首先,让我们来看一下一个典型…