详解cv2.addWeighted函数【使用 OpenCV 添加(混合)两个图像-Python版本】

news2024/11/24 22:41:24

文章目录

  • 简介
  • 函数原型
  • 代码示例
  • 参考资料

简介

有的时候我们需要将两张图片在alpha通道进行混合,比如深度学习数据集增强方式MixUp。OpenCV的addWeighted提供了相关操作,瓷片博客将详细介绍这个函数,并给出代码示例。🚀🚀

函数原型

o u t p u t I m g = s a t u r a t e ( α ∗ i n p u t I m g 1 + β ∗ i n p u t I m g 2 + γ ) \rm outputImg=saturate( \alpha*inputImg1+ \beta*inputImg2 + \gamma) outputImg=saturate(αinputImg1+βinputImg2+γ)

cv.addWeighted(	src1, alpha, src2, beta, gamma[, dst[, dtype]]	) -> dst
参数说明
src1图片1
alpha图片1的权重
src2图片2
beta图片2的权重
gamma添加到每个总和的标量。一般为0
dst输出图片,Python版本不需要指定👎
dtype输出数组的可选深度,默认即可

代码示例

在这里插入图片描述

import cv2
import matplotlib.pyplot as plt

# 加载两张图片
img1 = cv2.imread(filename="Lenna.png")
img2 = cv2.imread(filename="horses.jpg")

# 将两张图片都调整到640*640
shape1 = img1.shape  # HWC
shape2 = img2.shape  # HWC
max1 = max(shape1[0], shape1[1])
max2 = max(shape2[0], shape2[1])
img1 = cv2.copyMakeBorder(
    src=img1,
    top=int((max1 - shape1[0])/2),
    bottom=int((max1 - shape1[0])/2),
    left=int((max1 - shape1[1])/2),
    right=int((max1 - shape1[1])/2),
    borderType=cv2.BORDER_REFLECT101,
)
img1 = cv2.resize(src=img1, dsize=(640, 640), interpolation=cv2.INTER_LINEAR)
img2 = cv2.copyMakeBorder(
    src=img2,
    top=int((max2 - shape2[0])/2),
    bottom=int((max2 - shape2[0])/2),
    left=int((max2 - shape2[1])/2),
    right=int((max2 - shape2[1])/2),
    borderType=cv2.BORDER_REFLECT101,
)
img2 = cv2.resize(src=img2, dsize=(640, 640), interpolation=cv2.INTER_LINEAR)

# 按照比例将两张图片进行混合
alpha = 0.5
beta = 1.0 - alpha
img_blending = cv2.addWeighted(src1=img1, alpha=alpha, src2=img2, beta=beta, gamma=.0)

# 绘制图片
fig = plt.figure(figsize=(9, 3))
fig.suptitle(t="Blend two images")

ax1 = fig.add_subplot(1, 3, 1)
ax2 = fig.add_subplot(1, 3, 2)
ax3 = fig.add_subplot(1, 3, 3)

ax1.set_title(label="image1")
ax1.spines["top"].set_visible(b=False)
ax1.spines["bottom"].set_visible(b=False)
ax1.spines["left"].set_visible(b=False)
ax1.spines["right"].set_visible(b=False)
ax1.axes.xaxis.set_visible(b=False)
ax1.axes.yaxis.set_visible(b=False)
ax1.imshow(X=cv2.cvtColor(src=img1, code=cv2.COLOR_BGR2RGB))

ax2.set_title(label="image2")
ax2.spines["top"].set_visible(b=False)
ax2.spines["bottom"].set_visible(b=False)
ax2.spines["left"].set_visible(b=False)
ax2.spines["right"].set_visible(b=False)
ax2.axes.xaxis.set_visible(b=False)
ax2.axes.yaxis.set_visible(b=False)
ax2.imshow(X=cv2.cvtColor(src=img2, code=cv2.COLOR_BGR2RGB))

ax3.set_title(label="blending image")
ax3.spines["top"].set_visible(b=False)
ax3.spines["bottom"].set_visible(b=False)
ax3.spines["left"].set_visible(b=False)
ax3.spines["right"].set_visible(b=False)
ax3.axes.xaxis.set_visible(b=False)
ax3.axes.yaxis.set_visible(b=False)
ax3.imshow(X=cv2.cvtColor(src=img_blending, code=cv2.COLOR_BGR2RGB))

plt.show()



参考资料

  1. Computer Vision: Algorithms and Applications
  2. OpenCV文档:Adding (blending) two images using OpenCV👍
  3. OpenCV文档:addWeighted() 🚀

收集整理和创作不易, 若有帮助🉑, 请帮忙点赞👍➕收藏❤️, 谢谢!✨✨🚀🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1090581.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

有外媒称,Linux 发行版Ubuntu 23.10也将正式支持树莓派 5

据了解,在树莓派 4 单板计算机推出 4年后,树莓派 5也在上月末正式发布,并且两者对比之后可以发现,树莓派 5主要提升性能是添加了对 PCIe 2.0的支持。 Multiable万达宝医疗ERP(www.multiable.com.cn/solutions_yl)具备严格的保质期…

搭建vue后台管理系统框架

第一步:创建vue项目vue create 项目名称,并安装element-ui Vue CLI v3.1.3 ? Please pick a preset: Manually select features ? Check the features needed for your project: Babel, Router, CSS Pre-processors, Linter 1、是否使用history模式的…

【Express】静态资源

通过 Express 内置的 express.static 可以方便地托管静态文件,例如图片、CSS、JavaScript 文件等。 将静态资源文件所在的目录作为参数传递给 express.static 中间件就可以提供静态资源文件的访问了。 // 配置静态资源 app.use(express.static(public)); app.use(…

条件表达式

1.语法: 如果写范围,case不用写字段名 内容:case 字段名 when 值/或者值的范围 then 转化成的值 as 列名 end 语义:选择转换后新起一列 as不写默认text 2.其他用法: 2.1.计次 count(...)…

Master PDF Editor v5.9.70便携版

软件介绍 Master PDF Editor中文版是一款小巧的多功能PDF编辑器,可以轻松查看,创建,修改,批注,签名,扫描,OCR和打印PDF文档.高级注释工具,可以添加任意便笺指示对象突出显示,添加下划线和删除,而无需更改源PDF文件. 软件截图 更新日志 code-industry.net/what-is-new-in-mas…

【原创】在Linux上安装Zabbix客户端

检查Linux版本 cat /etc/issue得到结果 Ubuntu 18.04.2 LTS \n \l 下载软件 到 Zabbix官网(https://www.zabbix.com/) 依次点击 Download>Zabbix Packages>Choose your platform>ZABBIX VERSION>6.4>OS DISTRIBUTION>Ubuntu>OS …

[科研琐事] 安装服务器到机柜的二三事

1. 机柜参数 宽度:一般机器都是符合的; 深度:对应服务器最长的那个边; 厚度(高度):1/2/3/4U,就是机柜上写的刻度数字,1U1.75英寸。 1U4.45cm 2U4.45cm * 2 3U4.45cm * …

关于LEFT JOIN的一次理解

先看一段例子: SELECTproduct_half_spu.id AS halfSpuId,product_half_spu.half_spu_code,product_half_spu.half_spu_name,COUNT( product_sku.id ) AS skuCount,product_half_spu.create_on,product_half_spu.create_by,product_half_spu.upload_pic_date,produc…

业务安全五重价值:防攻击、保稳定、助增收、促合规、提升满意度

目录 防范各类威胁攻击 保障业务的连续性和稳定性 保障业务的合规性 提升企业营收和发展 提升企业满意度和品牌知名度 2023年暑假被“票贩子”和“黄牛”攻陷。他们利用各种手段抢先预约名额,然后加价出售给游客,导致了门票供不应求的局面&#xff…

CNN-generated images are surprisingly easy to spot... for now

CNN-generated images are surprisingly easy to spot… for now----《目前CNN生成的图像非常容易被发现》 背景: 研究者们发现,仅仅对一种由CNN模型生成的图像进行训练的分类器,也可以检测许多其他模型生成的结果。由此提出这样的观点&#…

thinkphp5.1 获取缓存cache(‘cache_name‘)特别慢,php 7.0 unserialize 特别慢

thinkphp5.1 获取缓存cache(‘cache_name’)特别慢,php 7.0 unserialize 特别慢 场景: 项目中大量使用了缓存,本地运行非常快,二三百毫秒,部署到服务器后 一个表格请求就七八秒,最初猜想是数据库查询慢&am…

Java进阶 之 再论面向对象(2)——类的定义及对象的使用 封装Encapsulation 关键字private,this

前言 在上一篇博客中,我们从面向过程和面向对象的编程思想谈起,阐述了类和对象在Java中的编程中的应用,此外,对于对象的内存,变量作用域,参数传递等进行了阐述。 Java进阶 之 再论面向对象(1&…

噪声主动控制装置设计

目录 摘 要...................................................................................... 2 第一章 绪论........................................................................ 6 1.1 研究课题背景...................................................…

C++——多态调用和普通调用的本质区别

目录 一.多态特性 回顾一下多态特性的含义: 回顾多态特性的两大形成条件: 而普通调用和多态调用的本质区别在于: 二.理解调用 例一: 普通调用的理解1: 普通调用的理解2: 注:错误代码的…

【mfc/VS2022】计图实验:绘图工具设计知识笔记

绘制曲线(贝塞尔曲线): 转自:CDC 类 | Microsoft Learn 绘制一条或多条贝塞尔曲线。 BOOL PolyBezier(const POINT* lpPoints,int nCount);参数 lpPoints 指向包含曲线端点和控制点的 POINT 数据结构数组。 nCount 指定 lpPo…

移远通信C-V2X模组产品 助力车载生态建设跑出“加速度”

10月11日,移远通信受邀参加“长安创新驱动数智未来”行业研讨会。 本次会议围绕车载行业智能化转型取得的阶段性技术与终端成果展开讨论,旨在持续助力汽车行业智能出行的变革。移远通信产品总监侯海燕于会议上针对当下车载行业发展热点——C-V2X技术的相…

面经-北京泛微二面-Java开发

北京泛微二面-Java开发。以下内容为面试复盘,面试官问题无改动,回答已进行修正。 自我介绍 我是XXXX,来自XXX… 面试官提问: 1.像这些比赛的话,你是自己参加还是社团的人一起参加? 答:大多…

vue打包压缩

参考 https://www.cnblogs.com/lafitewu/p/8309305.html 注意:方法1和方法2不能同时用 取消打包的map config/index.js的productionSourceMap设置为false 抽取js 将部分常用又比较大的组件直接抽取为一个单独的js 打开webpack.base.conf.js,在module.exports.entry中添加想…

docker 搭建本地Chat GPT

要在CentOS7上安装Docker,您可以按照以下步骤进行操作: 1、更新系统包列表 sudo yum update2、安装Docker存储库的必要软件包 sudo yum install -y yum-utils device-mapper-persistent-data lvm23、添加Docker存储库 sudo yum-config-manager --add…

格式工厂怎么把两个视频合并在一起

免费的工具谁不喜欢呢,今天为大家介绍的是格式工厂这款多功能视频转换软件,然而今天主要为大家介绍的是格式工厂的视频合并功能。 是的,你没有听错,格式工厂除了转换之外,还可以视频合适、视频剪辑、视频分割、去水印…