当前位置: 首页 > news >正文

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

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

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.lryc.cn/news/528605.html

相关文章:

  • window中80端口被占用问题
  • 06-机器学习-数据预处理
  • 电梯系统的UML文档12
  • 萌新学 Python 之运算符
  • 嵌入式知识点总结 Linux驱动 (五)-linux内核
  • zabbix7 配置字体 解决中文乱码问题(随手记)
  • 预测不规则离散运动的下一个结构
  • CTFSHOW-WEB入门-命令执行29-32
  • SQL Server 建立每日自动log备份的维护计划
  • doris:HLL
  • 双层Git管理项目,github托管显示正常
  • 准备知识——旋转机械的频率和振动基础
  • 知识库管理驱动企业知识流动与工作协同创新模式
  • CMake常用命令指南(CMakeList.txt)
  • 【回溯+剪枝】找出所有子集的异或总和再求和 全排列Ⅱ
  • 中国技术突破对国际格局的多维影响与回应
  • 【漫话机器学习系列】068.网格搜索(GridSearch)
  • 元宇宙下的Facebook:虚拟现实与社交的结合
  • 记忆力训练day08
  • 崇州市街子古镇正月初一繁华剪影
  • websocket webworker教程及应用
  • 【后端】Flask
  • 【cran Archive R包的安装方式】
  • 如何用matlab画一条蛇
  • Greenplum临时表未清除导致库龄过高处理
  • 【Linux】gdb——Linux调试器
  • C++ 中用于控制输出格式的操纵符——setw 、setfill、setprecision、fixed
  • C++ ——— 学习并使用 priority_queue 类
  • 基础项目实战——3D赛车(c++)
  • ODP(OBProxy)路由初探