关于图像融合的线性方法即使用addweighted函数进行图像融合,其核心是ROI感兴趣区域的定义,ROI区域在opencv中就是矩形区域(RECT)

先创建Rect区域,再给予ROI一些基本性质,形成图像掩膜。

ROI即为目标图像中的你想要叠加图像的区域,其基本性质即该区域的位置和范围。

一丶创建ROI:

  1. Mat roi;
  2. roi = image(RECT(500, 250, logo.clos, logo.rows));//在这里相当于用指针的知识将roi区域指向为image图像相应区域
  3. //500和250代表了ROI区域的左上角的坐标,后面为ROI区域范围

其实roi区域就相当于一个mat 对象的信息头储存的地址是roi区域的地址,详见后面的博客。

二丶构建ROI区域掩膜(图像叠加的基础)

Mat ROI = image(Rect(200, 250, logo.cols, logo.rows));
Mat mask = imread("logo.jpg", 0);//掩膜必须为叠加图片的灰度图
logo.copyTo(ROI, mask);

三丶两图片的线性混合

线性混合就是指两个图片或两段视频以某种函数关系叠加呈现。

addWeighted原函数:

void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype = -1);

第一个参数:要叠加的第一个图像Mat

第二个参数:标识第一个参数叠加的权重

第三个参数:表示第二个叠加的图像,他需要和第一个数组拥有同样的尺寸和通道数

第四个参数:表示第二个叠加图像的权重

第五个参数:输出参数,需要和前两个图像拥有同样的通道数和尺寸

第六个参数:一个加到权重总和上的标量值(填0就好)

第七个参数:输出阵列的深度有默认值-1, 当两张叠加图片深度相同时,参数为-1

对应表达式为:dst = src1[i] * alpha + src2[i] * beta + gamma;//两张图片每个通道对应数值之和。

  1. 读取图像
  2. Mat srcImage4= imread("dota_pa.jpg",1);
  3. Mat logoImage= imread("dota_logo.jpg");
  4. if(!srcImage4.data ) { printf("你妹,读取srcImage4错误~! \n"); return false; }
  5. if(!logoImage.data ) { printf("你妹,读取logoImage错误~! \n"); return false; }
  6. //【2】定义一个Mat类型并给其设定ROI区域
  7. Mat imageROI;
  8. //方法一
  9. imageROI=srcImage4(Rect(200,250,logoImage.cols,logoImage.rows));
  10. //【3】将logo加到原图上 ,利用线性混合构建掩膜,其中logo权重是0.3,原图中的ROI区域图像是0.5
  11. addWeighted(imageROI,0.5,logoImage,0.3,0.,imageROI);
  12. //【4】显示结果
  13. namedWindow("<4>区域线性图像混合示例窗口 by浅墨");
  14. imshow("<4>区域线性图像混合示例窗口 by浅墨",srcImage4);

转载自:https://blog.csdn.net/qq_35859033/article/details/77165157

Opencv--addWeighted()相关推荐

  1. Opencv 图片融合 addWeighted性能测试

    原文:http://blog.csdn.net/u011503970/article/details/18615537 这次介绍OpenCV中一个简单的点运算函数,用来实现图片合成. 对应于例程中的 ...

  2. 【opencv4】opencv视频教程 C++ 6、图像混合、线性混合、混合权重相加addWeighted()、混合加add()、混合乘multiply()

    上一讲:[opencv4]opencv视频教程 C++ 5.读写图像imread.imwrite.读写像素at<>().修改像素值.ROI区域选择(图像裁剪)Rect.Vec3b与Vec3 ...

  3. [OpenCV] 练习题实现代码 使用 cv.addWeighted 函数在文件夹中创建图像的幻灯片放映,并在图像之间进行平滑过渡

    1.问题背景 opencv 官方手册 文档 练习题 练习题实现代码 使用 cv.addWeighted 函数在文件夹中创建图像的幻灯片放映,并在图像之间进行平滑过渡 2.代码部分 按任意键切换幻灯片 ...

  4. OpenCV 矩阵常用操作,比如 addWeighted, flip, hconcat, reduce, merge, norm, repeat, split, sort, mulSpectrum 等

    平时经常会用到一些 C++ OpenCV 矩阵 Mat 常用的函数,每次用到都要到官网去查看,现在特地整理了一下. 下面的函数均来自于 https://docs.opencv.org/master/d ...

  5. OpenCV这么简单为啥不学——1.10、addWeighted设置图片透明度

    OpenCV这么简单为啥不学--1.10.addWeighted设置图片透明度 目录 OpenCV这么简单为啥不学--1.10.addWeighted设置图片透明度 前言 cv2.addWeighte ...

  6. 【OpenCV】OpenCV函数精讲之 -- addWeighted()函数(线性混合)

    addWeighted()函数用来计算两个数组(图像阵列)的加权和. 格式如下: void addWeighted(InputArray src1, double alpha, InputArray ...

  7. opencv: 图片 设置 透明度 并 叠加(cv2.addWeighted)

    API cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) → dst. 其中,alpha 为 src1 透明度,beta ...

  8. 《OpenCV3编程入门》学习笔记7 图像变换(一)基于OpenCV的边缘检测

    第7章 图像变换 7.1 基于OpenCV的边缘检测 7.1.1 边缘检测的一般步骤 1.滤波:边缘检测算法主要基于图像强度的一阶和二阶导数,导数对噪声敏感,所以要滤波 2.增强:确定图像各点邻域强度 ...

  9. OpenCV+python:图像梯度

    1,图像梯度的概念 梯度简单来说就是求导,在图像上表现出来的就是提取图像的边缘(无论是横向的.纵向的.斜方向的等等),所需要的是一个核模板.模板的不同结果也不同.所以能够看到,全部的这些个算子函数,归 ...

  10. OpenCV+python:像素运算

    一.数值运算(调节亮度,调整对比度) OpenCV提供的图片色素的处理函数(运算的要求:两张图片的shape要一样): (1)相加:add() (2)相减:subtract() (3)相乘:divid ...

最新文章

  1. Java程序员高效开发必备工具,其中有你的最爱吗?
  2. 安全戴尔服务器销售,PowerEdge T340
  3. 男生计算机学校,杭州2021年男生读什么计算机学校
  4. Transaction事务
  5. python整数类型进制表示_Python的基本数值类型
  6. 微信小程序初识到躺坑
  7. JS编程:查找数组元素位置
  8. 华为android已锁定,教你如何查看华为手机是否己解锁bootloader
  9. 超声波测距仪编程_超声波测距详细资料及程序代码
  10. 2019-9-2-win10-uwp-切换主题
  11. springboot+vue项目部署到外网服务器的完整步骤(前后端分离 分别部署)
  12. 交大『云观CD-ROMIII』直接由CD-ROM执行之安装法(转)
  13. 1008: 美元和人民币 ZZULIOJ
  14. 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础
  15. 手把手带你打造自己的UI样式库(第三章)之常用样式组件的设计与开发
  16. 标志寄存器的状态标志
  17. 什么是架构即代码( Infrastructure As Code)
  18. mesh 协调器 路由器_双模网络协调器、双模路由器、双模mesh组网系统及其方法与流程...
  19. pink老师JavaScript视频教程笔记
  20. 2021南京航天航空大学820自动控制原理参考答案

热门文章

  1. 面试精讲之面试考点及大厂真题 - 分布式专栏 09 缓存必问:Reids持久化,高可用集群
  2. Centos7.4系统下安装httpd,mariadb,php7.1环境运行禅道
  3. Docker for windows 容器内网通过独立IP直接访问的方法
  4. npm切换淘宝源,yarn切换淘宝源
  5. #JAVA# 判断从键盘输入的字符串是否为回文
  6. C#LeetCode刷题-字符串
  7. selenium基础入门
  8. linux shell 读取文件脚本
  9. java 学到什么实习_我的外展实习从今天开始! 到目前为止,这是我已经完成并学到的东西。...
  10. 小程序使用sass_如何使用Sass Maps生成所有实用程序类