opencv入门到精通——图像上的算术运算

目录

目标

图像加法

图像融合

按位运算


 

目标

  • 学习图像的几种算术运算,例如加法,减法,按位运算等。

  • 您将学习以下功能:cv.addcv.addWeighted等。

图像加法

您可以通过OpenCV函数cv.add()或仅通过numpy操作res = img1 + img2添加两个图像。两个图像应具有相同的深度和类型,或者第二个图像可以只是一个标量值。

注意
OpenCV加法和Numpy加法之间有区别。OpenCV加法是饱和运算,而Numpy加法是模运算。

例如,考虑以下示例:

 

>>> x = np.uint8([250])
>>> y = np.uint8([10])
>>> print( cv.add(x,y) ) # 250+10 = 260 => 255
[[255]]
>>> print( x+y )          # 250+10 = 260 % 256 = 4
[4]

当添加两个图像时,它将更加可见。OpenCV功能将提供更好的结果。因此,始终最好坚持使用OpenCV功能。

图像融合

这也是图像加法,但是对图像赋予不同的权重,以使其具有融合或透明的感觉。根据以下等式添加图像:

图片

G(x)= (1 - \alpha)f_0(x)+ \alpha f_1

通过从 α 从 0→1 更改,您可以在一个图像到另一个图像之间执行很酷的过渡。

在这里,我拍摄了两个图像,将它们融合在一起。第一幅图像的权重为0.7,第二幅图像的权重为0.3。cv.addWeighted()在图像上应用以下公式。

图片

在这里γ 被视为零。

 

img1 = cv.imread('ml.png')
img2 = cv.imread('opencv-logo.png')
dst = cv.addWeighted(img1,0.7,img2,0.3,0)
cv.imshow('dst',dst)
cv.waitKey(0)
cv.destroyAllWindows()

检查以下结果:

图片

按位运算

这包括按位 AND、 ORNOT 和 XOR 操作。它们在提取图像的任何部分(我们将在后面的章节中看到)、定义和处理非矩形 ROI 等方面非常有用。 下面我们将看到一个例子,如何改变一个图像的特定区域。
我想把 OpenCV 的标志放在一个图像上面。如果我添加两个图像,它会改变颜色。如果我混合它,我得到一个透明的效果。但我希望它是不透明的。如果是一个矩形区域,我可以使用 ROI,就像我们在上一章中所做的那样。但是 OpenCV 的 logo 不是长方形的。所以你可以使用如下的按位操作来实现:

我想在图像上方放置OpenCV徽标。如果添加两个图像,它将改变颜色。如果混合它,我将获得透明效果。但我希望它不透明。如果是矩形区域,则可以像上一章一样使用ROI。但是OpenCV徽标不是矩形。因此,您可以按如下所示进行按位操作:

 

# 加载两张图片
img1 = cv.imread('messi5.jpg')
img2 = cv.imread('opencv-logo-white.png')
# 我想把logo放在左上角,所以我创建了ROI
rows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols ]
# 现在创建logo的掩码,并同时创建其相反掩码
img2gray = cv.cvtColor(img2,cv.COLOR_BGR2GRAY)
ret, mask = cv.threshold(img2gray, 10, 255, cv.THRESH_BINARY)
mask_inv = cv.bitwise_not(mask)
# 现在将ROI中logo的区域涂黑
img1_bg = cv.bitwise_and(roi,roi,mask = mask_inv)
# 仅从logo图像中提取logo区域
img2_fg = cv.bitwise_and(img2,img2,mask = mask)
# 将logo放入ROI并修改主图像
dst = cv.add(img1_bg,img2_fg)
img1[0:rows, 0:cols ] = dst
cv.imshow('res',img1)
cv.waitKey(0)
cv.destroyAllWindows()

请看下面的结果。左图显示了我们创建的mask。右图显示最终结果。为了更好地理解,显示上面代码中的所有中间映像,特别是 img1_bg 和 img2_fg。

图片

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

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

相关文章

负载电容对晶振频率稳定性的影响

在电子系统中,晶振是产生精确频率的关键元件,而负载电容是影响晶振频率稳定性的重要因素之一。本文将深入探讨负载电容对晶振频率稳定性的影响,并分析如何通过合理的选择和设计来减小这种影响。 一、负载电容对晶振频率稳定性的影响 负载电…

LangChain入门指南:定义、功能和工作原理

LangChain入门指南:定义、功能和工作原理 引言LangChain是什么?LangChain的核心功能LangChain的工作原理LangChain实际应用案例如何开始使用LangChain 引言 在人工智能的浪潮中,语言模型已成为推动技术革新的重要力量。从简单的文本生成到复…

oracle恢复分片和非分片备份?

分片备份命令参考:适合大数据库并行备份提高备份速度 对于超大数据库,混合有小文件和大文件表空间,section size 表示分片,大小一般大于32G,可结合通道数量设置最佳值。 run { allocate channel t1 type disk; alloc…

从安全性角度,看“可信数字底座”有何价值

文章目录 每日一句正能量前言概念对比安全技术对比思考与建议 每日一句正能量 不管现在有多么艰辛,我们也要做个生活的舞者。 前言 万向区块链此前提出“可信数字底座”这一概念和技术,即将区块链与物联网、人工智能、隐私计算等数字化技术相融合&#…

XPM_CDC_PULSE

MACRO_GROUP: XPM MACRO_SUBGROUP: XPM_CDC 1、Introduction 此宏将源时钟域中的脉冲同步到目标时钟域。源时钟域中任何大小的脉冲,如果正确启动,将生成单个目标时钟周期大小的脉冲。 为了正确操作,输入数据必须由目标时钟采样两次或…

LT8711UX,LT8711UXC ,LT8711UXD ,LT8711UXE1,LT8711UXE2的区别,选型的工程师注意了!!!

LT8711UX,LT8711UXC ,LT8711UXD ,LT8711UXE1,LT8711UXE2做为龙迅的重点物料,大家都不陌生。 可是它们不一样的后缀,又有什么不一样的应用区别呢? LT8711***均为DP/Type-C to HDMI系列的芯片。 LT8711UX,是一款带音频的Type-C…

2023美团机器人研究院学术年会成功举办

2023年12月19日,深圳市美团机器人研究院学术年会在清华大学深圳国际研究生院成功落下帷幕。会议回顾了研究院成立一年来的进展和成果,并邀请了各界专家共同讨论机器人技术的未来发展趋势。此外,年会期间还举办了首届低空经济智能飞行管理挑战…

可视化监控/安防视频云平台公共区域人员行为安全监控方案

大家在浏览新闻时,经常会看到某某地区有人员摔倒,长时间无人发现或人员闯入某危险区域管理人员未及时劝离,导致发生了意外事故的新闻。由于人力资源和人为巡检能力有限,在很多公共区域无法及时检测人员行为从而导致危险发生。为确…

【C语言进阶篇】你真的了解预处理吗? 预处理详细解析

🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 一、预定义符号的含义二、#define2.1 #define定义标识符2.2 在define定义标识符的注意事项 三、#define 定义宏&…

轻松搭建知识付费小程序:让知识传播更便捷

明理信息科技saas知识付费平台 在当今数字化时代,知识付费已经成为一种趋势,越来越多的人愿意为有价值的知识付费。然而,公共知识付费平台虽然内容丰富,但难以满足个人或企业个性化的需求和品牌打造。同时,开发和维护…

java SSM家庭财务管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM家庭财务管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代 码和数据库,系统主要采…

百川大模型AI对话实战——Python开发一个对话机器人

百川大模型开放提供API体验中心,体验不错,有小伙伴也对搭建自己的对话机器人比较兴趣,今天通过Python来简单介绍下,如何调用百川大模型的API来构建自己的小产品。 在开发环境中安装Python,如何安装?参照网…

AI“百模大战”现状:向垂直、B端谋场景,算力仍是主要制约因素

文章目录 每日一句正能量前言AI(人工智能)大模型正“飞入”百姓家和行业中。向垂直、B端谋场景算力仍是主要制约因素构建“数据-模型-应用”飞轮后记 每日一句正能量 我们必须在失败中寻找胜利,在绝望中寻求希望。 前言 在当前快速发展的人工…

SecureCRT连接vmware虚拟机的centos系统配置

软件版本:VMware10.0.3,centos 7,securecrt 8.7.2 1,虚拟网络编辑器选择桥接模式, 2,如果不小心删除网络,centos关机状态下,选择恢复默认设置。 3,进入linux系统&#…

革命性突破:Great River推出XL高速ARINC 818传感器测试卡

Great River Technology荣幸地宣布,与RVS(远程视觉系统)2.0平台合作推出的XL高速ARINC 818传感器测试卡正式亮相。这款开创性的测试卡在柯林斯航空电子公司(RTX业务部)和波音公司开发和测试RVS 2.0系统中发挥了重要作用…

牛客小白月赛84——k级序列(超级无敌详解)(贪心)

前言: 这b题费了我一身牛劲,结果还是没有做出来,晚上请教大佬后,知晓方法,才将其ac,于是决心务必再次使用传说中的费曼学习法,并与大家分享一下这道题目。 题目: 登录—专业IT笔试…

09.list 容器

9、list 容器 功能: 将数据进行链式存储 链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成: 链表由一系列结点组成 结点的组成: 一个是存…

Zabbix6 使用Agent2实现证书监控的详细步骤

目标 我们的目标是通过获取网站的证书信息来实现网站证书监控。 使用agent2的key 只需使用其中的key,就能实现我们的目标功能。然而,由于它返回的是json格式的数据,我们需要根据数据来配置监控项目(item)和触发器&am…

六西格玛的科技漩涡——张驰咨询如何促成企业变革

在管理的海洋里,六西格玛管理是一艘稳健的航船,在质量管理的汪洋中乘风破浪,尽管质疑之声像远处的风暴不断逼近,但张驰咨询公司依靠这艘航船坚持初心,驭风而行。 20载耕耘,张驰咨询不仅仅是培养了超过8000…

IP地址子网划分案例

网络工程师基本功,每人必会的IP地址划分案例。 要求: 一段C类地址192.168.1.0/24,请你将地址分给网络中的主机,要求至少有5个子网,每个子网至少有20台主机。 步骤: 1、要求5个子网,要向主机…