Python+OpenCV系列:图像的运算
文章目录
- Python+OpenCV系列:图像的加权和、覆盖
- 1. 图像加权和(加权融合)
- 2. 图像覆盖(区域叠加)
- 3. 应用场景
- 4. 总结
Python+OpenCV系列:图像的加权和、覆盖
在图像处理中,图像的加权和与覆盖是两种非常常见的操作,广泛应用于图像融合、图像叠加、目标检测、特效制作等场景。Python 和 OpenCV 提供了简单而高效的工具来进行这些操作。在本文中,我们将介绍如何通过加权和操作将两幅图像融合,并通过图像覆盖技术将一幅图像叠加到另一幅图像的特定区域。
1. 图像加权和(加权融合)
图像加权和是将两幅图像按给定的权重进行融合的一种方式。OpenCV 提供了 cv2.addWeighted() 函数来实现这一操作。该函数的基本用法是将两幅图像的像素值按指定比例进行加权组合。
函数原型:
cv2.addWeighted(src1, alpha, src2, beta, gamma)
src1和src2:输入图像。alpha和beta:分别为两幅图像的权重。gamma:常数值,用于调整亮度。
通过调整 alpha 和 beta,可以控制两幅图像的混合程度,而 gamma 则用于调整整体的亮度。
示例代码:
import cv2# 读取两张图像
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')# 调整大小,使两张图像大小一致
img2 = cv2.resize(img2, (img1.shape[1], img1.shape[0]))# 图像加权和
alpha = 0.7
beta = 0.3
gamma = 0
result = cv2.addWeighted(img1, alpha, img2, beta, gamma)# 显示结果
cv2.imshow('Weighted Sum', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这段代码中,我们通过 cv2.addWeighted() 将两张图像按照指定的比例(alpha=0.7 和 beta=0.3)进行加权融合。融合后的结果显示了两张图像的组合。
2. 图像覆盖(区域叠加)
图像覆盖是指将一幅图像嵌入到另一幅图像的特定区域,通常用于图像合成、标志叠加等。使用 OpenCV,通常通过按位运算和区域裁剪来实现这一功能。
思路:
- 将目标图像(如一个 logo)裁剪成适当的尺寸。
- 在源图像中选择一个区域,将裁剪后的图像覆盖在该区域。
- 使用按位运算(如
cv2.bitwise_and())来实现图像的结合。
示例代码:
import cv2
import numpy as np# 读取源图像和覆盖图像
background = cv2.imread('background.jpg')
logo = cv2.imread('logo.png')# 获取 logo 的大小
rows, cols, _ = logo.shape# 在背景图像中选择区域
roi = background[0:rows, 0:cols]# 创建 logo 图像的掩模
logo_gray = cv2.cvtColor(logo, cv2.COLOR_BGR2GRAY)
_, mask = cv2.threshold(logo_gray, 1, 255, cv2.THRESH_BINARY)# 按位与操作,提取背景区域
background_region = cv2.bitwise_and(roi, roi, mask=cv2.bitwise_not(mask))# 按位与操作,提取 logo 区域
logo_region = cv2.bitwise_and(logo, logo, mask=mask)# 将 logo 区域与背景区域合成
result = cv2.add(background_region, logo_region)# 将合成结果覆盖到背景图
background[0:rows, 0:cols] = result# 显示结果
cv2.imshow('Image with Logo', background)
cv2.waitKey(0)
cv2.destroyAllWindows()
在此示例中,我们通过按位运算提取背景图和 logo 图像的相应区域,并将 logo 覆盖到背景图上。使用 cv2.bitwise_and() 对两幅图像的特定区域进行合成,确保 logo 区域不被背景遮挡。
3. 应用场景
-
图像加权和:
- 图像融合:将多张图像按权重融合,用于全景图拼接、图像增强等。
- 视频合成:将多种视频元素按一定权重叠加,生成特效。
-
图像覆盖:
- 标志叠加:将透明的 logo 或水印叠加到图像上。
- 图像合成:将多个图像合成成一幅新图像,例如在场景中叠加物体。
4. 总结
图像的加权和与覆盖操作是图像处理中常见的基本方法,广泛应用于图像融合、合成和特效制作中。通过 OpenCV 提供的 cv2.addWeighted() 函数和按位运算,用户可以方便地进行图像加权合成和图像区域覆盖。掌握这些方法,可以有效提升图像处理的灵活性和创意性,应用于各类项目中。
相关文章:
Python+OpenCV系列:图像的运算
文章目录 PythonOpenCV系列:图像的加权和、覆盖1. 图像加权和(加权融合)2. 图像覆盖(区域叠加)3. 应用场景4. 总结 PythonOpenCV系列:图像的加权和、覆盖 在图像处理中,图像的加权和与覆盖是两…...
【Unity技巧】Unity项目中哪些文件不用管理(.gitignore)
Unity的项目编译后一般都比较大,动辙几个G。这里面一般我们只需要把Assets, Packages, ProjectSettings这三个文件夹进行源代码管理就可以,其他文件就可以通过下面的.gitignore来忽略掉。 .gitignore文件的内容如下: # 将此 .gitignore 文件…...
ansible 自动化运维工具(三)playbook剧本
目录 Playbook的定义 Playbook组成 Playbook命令 Playbook剧本编写格式 基本组件 Handlers处理器 tags标签 Facts组件 Register:注册变量 Debug模块 Playbook循环 With_items循环 With_dict循环(字典循环) With_nested循环&…...
图论【Lecode_HOT100】
文章目录 1.岛屿数量No.2002.腐烂的橘子No.9943.课程表No.2074.实现Trie(前缀树)No.208 1.岛屿数量No.200 class Solution {public int numIslands(char[][] grid) {if (grid null || grid.length 0) {return 0;}int numIslands 0;int rows grid.len…...
day10性能测试(2)——Jmeter
【没有所谓的运气🍬,只有绝对的努力✊】 目录 1、LoadRunner vs Jmeter 1.1 LoadRunner 1.2 Jmeter 1.3 对比小结 2、Jmeter 环境安装 2.1 安装jdk 2.2 安装Jmeter 2.3 小结 3、Jmeter 文件目录结构 4、Jmeter默认配置修改 5、Jmeter元件、组…...
Y3编辑器文档4:触发器
文章目录 一、触发器简介1.1 触发器界面1.2 ECA语句编辑及快捷键1.3 参数设置1.4 变量设置1.5 实体触发器1.6 函数库与触发器复用 二、触发器的多层结构2.1 子触发器(在游戏内对新的事件进行注册)2.2 触发器变量作用域2.3 复合条件2.4 循环2.5 计时器2.6…...
1. 机器学习基本知识(3)——机器学习的主要挑战
1.5 机器学习的主要挑战 1.5.1 训练数据不足 对于复杂问题而言,数据比算法更重要但中小型数据集仍然很普遍,获得额外的训练数据并不总是一件轻而易举或物美价廉的事情,所以暂时不要抛弃算法。 1.5.2 训练数据不具有代表性 采样偏差&#…...
prometheusgrafana实现监控告警
Prometheus负责集群数据的监控和采集,然后传递给grafana进行可视化,集成睿象云可实现监控报警,为了方便操作,可以通过iframe嵌套grafana到指定的页面。 文章目录 1.Grafana集成Prometheus2.iframe内嵌grafana3.监控告警 1.Grafana…...
Ubuntu防火墙管理(五)——ufw源规则解读与修改
firewalld与nftables 在 /etc/firewalld/firewalld.conf 文件中,FirewallBackend 选项用于指定 Firewalld 使用的防火墙后端实现。具体来说: nftables:这是当前的默认选项,表示 Firewalld 将使用 nftables 作为防火墙后端。nftab…...
Docker如何运行一个python脚本Hello World
Docker如何运行一个python脚本Hello World 1、编写Python的Hello World:script.py #!/usr/bin/python #_*_coding:utf-8_*_ print("Hello World") 2、Dockerfile文件 #拉取Docker环境 FROM python #设置工作目录 WORKDIR /app #将dockerfile同级文件copy到…...
人工智能-自动驾驶领域
目录 引言自动驾驶与人工智能的结合为什么自动驾驶领域适合发表文章博雅智信的自动驾驶辅导服务结语 引言 自动驾驶技术的崛起是当代交通行业的一场革命。通过结合先进的人工智能算法、传感器技术与计算机视觉,自动驾驶不仅推动了技术的进步,也使得未来…...
[ubuntu18.04]ubuntu18.04安装json-c操作说明
ubuntu18.04安装json-c 代码下载 rootw1804-virtual-machine:/home/w1804/tr069# git clone https://github.com/json-c/json-c.git Cloning into /opt/git/json-c... remote: Enumerating objects: 6398, done. remote: Counting objects: 100% (1067/1067), done. remote:…...
华为eNSP:VRRP
一、VRRP背景概述 在现代网络环境中,主机通常通过默认网关进行网络通信。当默认网关出现故障时,网络通信会中断,影响业务连续性和稳定性。为了提高网络的可靠性和冗余性,采用虚拟路由冗余协议(VRRP)是一种…...
Linux--top系统资源命令查看--详解
top命令用法 图: top命令用法: top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。 top的使用方式: top [-d number] | top [-bnp] top参数解释: -…...
es的join是什么数据类型
在 Elasticsearch 中,parent 并不是一个独立的数据类型,而是与 join 数据类型一起使用的一个概念。join 数据类型用于在同一个索引中建立父子文档之间的关系,允许你在一个索引内表示层级结构或关联关系。通过 join 字段,你可以定义不同类型的文档(如父文档和子文档),并指…...
KV Shifting Attention Enhances Language Modeling
基本信息 📝 原文链接: https://arxiv.org/abs/2411.19574👥 作者: Mingyu Xu, Wei Cheng, Bingning Wang, Weipeng Chen🏷️ 关键词: KV shifting attention, induction heads, language modeling📚 分类: 机器学习, 自然语言处…...
软错误防护技术在车规MCU中应用
在大气层内,宇宙射线粒子与大气分子发生核反应生成大气中子。大气中子入射微电子器件或电路将会诱发单粒子效应(SEE),效应类型主要有单粒子翻转(SEU)、单粒子瞬态(SET)、单粒子锁定&…...
遥感图像处理二(ENVI5.6 Classic)
1 实验目的和内容 1.1 实验目的 本次上机旨在继续深入了解ENVI软件的基本使用,并对提供的实验数据进行基本的图像分割和地物分类等操作并分析结果。 1.2 实验内容 1.2.1 图像分割 对教材示例数据“C7图像分割”中的风景图、兰花图和娃娃图分别进行图像分割操作…...
经典文献阅读之--A Fast Dynamic Point Detection...(用于驾驶场景中的动态点云剔除方法)
0. 简介 现有的基于3D点的动态点检测和移除方法存在显著的时间开销,使其难以适应激光雷达-惯性测程系统。《A Fast Dynamic Point Detection Method for LiDAR-Inertial Odometry in Driving Scenarios》提出了一种基于标签一致性的动态点检测和移除方法࿰…...
百度搜索应适用中文域名国家标准,修复中文网址展示BUG
12月1日中文域名国家标准正式实施。该标准“明确了中文域名在编码、解析、注册、字表等方面的技术要求,适用于中文域名注册管理机构、注册服务机构、网络软硬件服务商及终端用户”。 00:23 显然,百度作为网络软硬件服务商,是包括在国家标准的…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...
