cv2.addWeighted 操作 np.array 踩坑记录

news2025/1/17 4:47:28

cv2.addWeighted函数是把两张图片img1, img2达到融合的效果,

看官网的解释,下图中f0和f1代表两张图片,

在这里插入图片描述
用法是这样的

import cv2

alpha = 0.6
beta = (1.0 - alpha)

src1 = cv2.imread("img1.jpg")
src2 = cv2.imread("img2.jpg")

dst = cv2.addWeighted(src1, alpha, src2, beta, 0.0)

这个例子比较好理解,src1, src2都是cv::Mat型,很顺利就可以达到如下的效果:
在这里插入图片描述请添加图片描述 = = =

请添加图片描述
这是我想得到的结果。

但是现在src1, src2为np.array, 其中src1.dtype为int8型,src2.dtype为np.float64型。
注意src1和src2的shape首先要是匹配的,假设都是(600, 600, 3).

踩坑1

这时调用

dst = cv.addWeighted(src1, alpha, src2, beta, 0.0)

会报长长一段错,

cv2.error: OpenCV(4.6.0) /io/opencv/modules/core/src/arithm.cpp:672: error: 
(-5:Bad argument) When the input arrays in add/subtract/multiply/divide functions 
have different types, the output array type must be explicitly specified in function 'arithm_op'

看出大意是两个array的type不同,不能做四则运算,

那么把src1也转成np.float64,再调用通过了,

踩坑2

然而,在cv2.imshow("dst",dst)时,出现了一张大白板
查看里面的数值都是在0~255范围内的,而且还有0值,绝不会都是255,但是不论怎么imshow都是大白板。

百思不得其解,先跳过这一步,换一下思路。

踩坑3

于是先让src2 = src1, 如下

src2 = src1  #即将踩坑
src2[mask>0] = color  #mask为1处填上颜色
dst = cv.addWeighted(src1, alpha, src2, beta, 0.0)

猜想这回应该可以了,然而imshow得到了如下结果:

请添加图片描述
这不正常阿,无论怎么imshow还是这个结果,

于是想看看src1原图,
然而原图也变成了这个样子。。

请添加图片描述

出现这种现象 第一时间想到的是 我是不是把src1的指针给了src2, src2一变动src1也会跟着变动。
突然想到了copy操作。
改为:

src2 = src1.copy()
src2[mask>0] = color  #mask为1处填上颜色
dst = cv.addWeighted(src1, alpha, src2, beta, 0.0)

终于解决了,又想到了上面那个大白板(踩坑2)的问题,
这里用了int型能正确显示,maybe是float64的问题。

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

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

相关文章

MQ-2烟雾传感器模块功能实现(STM32)

认识MQ-2模块与其工作原理 MQ-2型烟雾传感器属于二氧化锡半导体气敏材料,属于表面离子式N型半导体。当处于200~300摄氏度时,二氧化锡吸附空气中的氧,形成氧的负离子吸附,使半导体中的电子密度减少,从而使其电阻值增加。…

【C语言复习】C语言中的数组与指针

数组与指针复习写在前面数组和指针指针基础概念进阶知识指针的分类指针和数组笔试题写在前面 数组和指针小节,主要分为以下关键点: 常见指针分类,如指针数组、数组指针、函数指针等。什么是数组/ 指针有关数组和指针的题目数组传参 我们也…

写字楼/园区/购物中心空置率太高?快用快鲸智慧楼宇系统

客户租不租你的写字楼,事关区位、交通、环境、价格、面积、装修等诸多因素,但很多招商部对这些影响客户决策的数据并不重视,在客户初次上门看房时仅简单记录姓名、联系方式、需求面积,对其他核心数据熟视无睹,也为日后…

第十三届蓝桥杯

这里写目录标题一、刷题统计(ceil函数返回的是等值于某最小整数的浮点值,不强制转换回int就wa,没错就连和int整数相加都wa二、修剪灌木(主要应看清楚会调转方向三、统计子矩阵(前缀和滑动窗口⭐)四、[积木画…

【算法】笔记:LeetCode 206. 反转链表

文章目录前言思考问题:把分开的节点连在一起结合原题:使用[迭代]解决卡点引入新指针边界条件代码反转的逻辑代码(完整答案)结合原题:使用[递归]解决卡点完整代码问题的子问题当前层要干什么递归出口前言 这道题可以拆…

冰箱压缩机 方案

压缩机是制冷系统的心脏,它从吸气管吸入低温低压的制冷剂气体,通过电机运转带动活塞对其进行压缩后,向排气管排出高温高压的制冷剂气体,为制冷循环提供动力,从而实现压缩→冷凝→膨胀→蒸发 ( 吸热 ) 的制冷循环。压缩…

C#开发的OpenRA的游戏主界面怎么样创建

通过前面加载界面布局数据,可以把整个界面逻辑的数据加载到内存, 但是这些数据怎么显示出来,又是没有定义的。比如前面定义了多个界面的布局, 又是怎么样知道需要显示哪一个界面? 现在就来解决这个问题,其实整个游戏都是可以通过yaml文件进行配置的, 所以我们需要从yaml…

水果FLStudio21.0.0中文版全能数字音乐工作站DAW

FL Studio 21.0.0官方中文版重磅发布纯正简体中文支持,更快捷的音频剪辑及素材管理器,多样主题随心换!Mac版新增对苹果M2/1家族芯片原生支持。编曲、剪辑、录音、混音,20余年的技术积淀和实力研发,FL Studio 已经从电音…

【基础算法】单链表的OJ练习(3) # 移除链表元素 # 相交链表 #

文章目录前言移除链表元素相交链表写在最后前言 本章的OJ练习也是相对简单的,只要能够理解解题的思路,并且依照这个思路能够快速的写出代码,我相信,你的链表水平已经足够了。 对于OJ练习(2) : ->传送门…

不平凡的一天——

作者:指针不指南吗 专栏:个人日常记录 🐾或许会很慢,但是不可以停下来🐾 文章目录1.自我介绍2.上学期3.不凡的一天4.新学期写个博客,简单记录一下,新学期加油!!&#xff…

day7 同步互斥

作业 1.将一个文件中的数据打印到终端上类似cat一个文件,要求如下 (1)a线程读取文件中的数据 (2)B线程将A线程读取到的数据打印到终端上 (3)文件打印完毕后,结束进程 方法1&#…

CMMI流程规范—服务与维护

服务与维护(Service and Maintenance, SM)是指产品销售之后的客户服务和产品维护。客户服务和产品维护的宗旨就是提高客户对产品以及对开发方的满意度。服务与维护过程域是SPP模型的重要组成部分。本规范阐述了服务与维护过程域的两个主要规程&#xff1…

蓝库云|五大关键引领制造业数字化智慧升级

蓝库云根据《2023制造产业趋势展望》报告,并归纳出「强化企业韧性与敏捷、提升留才诱因、建构多元供应链、兼顾安全的智慧工厂、循环催化永续经营」是牵动制造产业发展的五大关键。将永续目标整合至企业中长期策略中;数字化方面则搭配五大发展关键&#…

【Redis应用】基于Redis实现共享session登录(一)

🚗Redis应用学习第一站~ 🚩本文已收录至专栏:数据库学习之旅 👍希望您能有所收获 👉相关推荐:使用短信服务发送手机验证码进行安全校验 一.引入 ​ 在开发项目过程中,我们常常能碰到需要登录注…

Linux操作系统学习(文件IO)

文章目录基础IO系统相关接口文件描述符一切皆文件文件描述符的分配规则重定向fork后的文件描述符基础IO 系统相关接口 在C语言中对文件的操作有fopen打开、fclose关闭、fread读、fwrite写等函数;其实这些都是在系统调用接口上进行的封装。 这里介绍4个系统调用接…

【异常】因多租户字段缺少导致Error updating database. Column ‘tenant_id‘ cannot be null

一、报错内容 org.springframework.dao.DataIntegrityViolationException: ### Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: Column tenant_id cannot be null ### The error may exist in com/xxx/cloud/mall/admin/mapper/Goods…

303. 区域和检索 - 数组不可变

303. 区域和检索 - 数组不可变 给定一个整数数组 nums&#xff0c;处理以下类型的多个查询: 计算索引 left 和 right &#xff08;包含 left 和 right&#xff09;之间的 nums 元素的 和 &#xff0c;其中 left < right 实现 NumArray 类&#xff1a; NumArray(int[] num…

英语六级的三大经典句型

目录 1.强调句型&#xff08;提前想好要写在哪个地方&#xff09; 2.虚拟语气 3.第三个句型 3.倒装&#xff08;写一到两个倒装&#xff09; &#xff08;1&#xff09;否定词放在句首就是倒装 &#xff08;2&#xff09;so...that句型结构的句子将so引导的部分置于句首时…

一、一篇文章打好高数基础-函数

1.连续函数的性质考点分析函数的连续性主要考察函数的奇偶性、有界性、单调性、周期性。例题判断函数的奇偶性的有界区间为&#xff08;&#xff09; A.(-1,0) B(0,1) C(1,2) D(2,3)2.闭区间上连续函数的性质考点分析闭区间上连续函数的性质主要考察函数的最大最小值定理、零点…

JavaScript 函数参数

JavaScript 函数对参数的值(arguments)没有进行任何的检查。JavaScript 函数参数与大多数其他语言的函数参数的区别在于&#xff1a;它不会关注有多少个参数被传递&#xff0c;不关注传递的参数的数据类型。函数显式参数与隐藏参数(arguments)在先前的教程中&#xff0c;我们已…