cv2.addWeighted 操作 np.array 踩坑记录
创始人
2024-05-28 15:38:16
0

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

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

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

import cv2alpha = 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的问题。

相关内容

热门资讯

安卓系统能跑win吗,探索跨平... 你有没有想过,你的安卓手机里能不能装上Windows系统呢?这听起来是不是有点像科幻电影里的情节?别...
安卓车载系统蓝牙设置,畅享智能... 你有没有发现,现在开车的时候,手机和车载系统之间的互动越来越频繁了呢?这不,今天就来给你详细说说安卓...
奥利奥安卓系统,探索新一代智能... 你有没有想过,一块小小的奥利奥饼干竟然能和强大的安卓系统扯上关系?没错,今天就要来聊聊这个跨界组合,...
微信使用安卓系统,功能解析与操... 你有没有发现,现在用微信的人越来越多了呢?尤其是安卓系统的用户,简直就像潮水一样涌来。今天,就让我带...
体验最新原生安卓系统,极致体验... 你有没有想过,手机系统就像是我们生活的调味品,有时候换一种口味,生活都会变得有趣起来呢?最近,我体验...
安卓系统能玩原神,尽享奇幻冒险... 你有没有想过,在安卓系统上也能畅玩《原神》这样的热门游戏呢?没错,就是那个画面精美、角色丰富、玩法多...
安卓写手机银行系统,基于安卓平... 你有没有想过,手机银行系统在我们日常生活中扮演了多么重要的角色呢?每天刷刷手机,就能轻松管理账户,转...
僵尸之夜恐怖安卓系统,揭秘恐怖... 僵尸之夜,恐怖安卓系统来袭!想象一个寂静的夜晚,你正沉浸在美梦中,突然,一阵诡异的铃声打破了夜的宁静...
谷歌框架和安卓系统,构建智能移... 你有没有想过,为什么你的手机那么聪明,能帮你找到路线,还能帮你拍出美美的照片呢?这都要归功于一个超级...
安卓系统和oppo系统哪个流畅... 你有没有想过,手机系统哪个更流畅呢?安卓系统和OPPO系统,这两个名字听起来就让人心动。今天,咱们就...
安卓怎么用微软系统,利用微软系... 你是不是也和我一样,对安卓手机上的微软系统充满了好奇?想象那熟悉的Windows界面在你的安卓手机上...
安卓系统如何安装nfc,安卓系... 你有没有想过,用手机刷公交卡、支付账单,是不是比掏出钱包来得酷炫多了?这就得归功于NFC技术啦!今天...
ios系统可以转安卓,跨平台应... 你有没有想过,你的iPhone手机里的那些宝贝应用,能不能搬到安卓手机上继续使用呢?没错,今天就要来...
iOSapp移植到安卓系统,i... 你有没有想过,那些在iOS上让你爱不释手的app,是不是也能在安卓系统上大放异彩呢?今天,就让我带你...
现在安卓随便换系统,探索个性化... 你知道吗?现在安卓手机换系统简直就像换衣服一样简单!没错,就是那种随时随地、随心所欲的感觉。今天,就...
安卓系统安装按钮灰色,探究原因... 最近发现了一个让人头疼的小问题,那就是安卓手机的安装按钮突然变成了灰色,这可真是让人摸不着头脑。你知...
安卓7.1.1操作系统,系统特... 你知道吗?最近我在手机上发现了一个超级酷的新玩意儿——安卓7.1.1操作系统!这可不是什么小打小闹的...
安卓os系统怎么设置,并使用`... 你有没有发现,你的安卓手机有时候就像一个不听话的小孩子,有时候设置起来真是让人头疼呢?别急,今天就来...
安卓降低系统版本5.1,探索安... 你知道吗?最近安卓系统又来了一次大动作,竟然把系统版本给降到了5.1!这可真是让人有点摸不着头脑,不...
解放安卓系统被保护,解放安卓系... 你有没有想过,你的安卓手机其实可以更加自由地呼吸呢?是的,你没听错,我说的就是解放安卓系统被保护的束...