gpt4 book ai didi

c++ - 使用OpenCv的矩阵运算(加法和减法)OpenCV C++

转载 作者:行者123 更新时间:2023-11-28 07:48:45 35 4
gpt4 key购买 nike

我使用openCV的addweighted函数将两张图片加在一起

addWeighted(ROI,1,watermark,0.5,0.0,ROI); 

但是,当我尝试执行相反的操作时,我得到的是黑色补丁,而不是从合成图像中删除第二张图像。

addWeighted(ROI,1,watermark,-0.5,0.0,ROI);

我也尝试过使用减法,但我得到了相同的结果。下图描述了我在说什么。请注意,我的算法没有正确检测到所有带水印的区域,但对于那些被正确检测到的区域,我无法从中减去水印。

enter image description here

如果你们能建议我如何进行减法,我将不胜感激。

谢谢。

最佳答案

根据 docs of addWeighted你给 watermark 一半的权重(你能解释为什么吗?)你的最后一个参数是深度类型...不是数组...所以如果 watermark 它应该是 -1 > 和 ROI 具有相同的深度,或者您输入要输入的深度值...如果您在文档中注明最终值是饱和值...也就是说,如果它超过 255它被拉低到 255...所以难怪如果你减去你不会得到两个精确的值。

** 编辑:**对你来说 I + 0.5W = R 其中 I 是 lena 图像,W 是水印,R 是结果图像。由于 R 在 255 以上被截断,因此将 R 存储在整数矩阵 CV_32UC3 中。由于您使用的是 OpenCV 2.1,因此最好通过扫描图像而不是使用 OpenCV API 来执行加权加法。这样你就可以将 R 保存在一个整数矩阵中,其中你可以获得的最大值是 (255 + 255),这将很容易存储。对于显示,使用 uchar 矩阵(截断的矩阵),对于反转过程,使用整数矩阵...

enter image description here

关于c++ - 使用OpenCv的矩阵运算(加法和减法)OpenCV C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14301576/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com