Opencv--addWeighted()
关于图像融合的线性方法即使用addweighted函数进行图像融合,其核心是ROI感兴趣区域的定义,ROI区域在opencv中就是矩形区域(RECT)
先创建Rect区域,再给予ROI一些基本性质,形成图像掩膜。
ROI即为目标图像中的你想要叠加图像的区域,其基本性质即该区域的位置和范围。
一丶创建ROI:
- Mat roi;
- roi = image(RECT(500, 250, logo.clos, logo.rows));//在这里相当于用指针的知识将roi区域指向为image图像相应区域
- //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;//两张图片每个通道对应数值之和。
- 读取图像
- Mat srcImage4= imread("dota_pa.jpg",1);
- Mat logoImage= imread("dota_logo.jpg");
- if(!srcImage4.data ) { printf("你妹,读取srcImage4错误~! \n"); return false; }
- if(!logoImage.data ) { printf("你妹,读取logoImage错误~! \n"); return false; }
- //【2】定义一个Mat类型并给其设定ROI区域
- Mat imageROI;
- //方法一
- imageROI=srcImage4(Rect(200,250,logoImage.cols,logoImage.rows));
- //【3】将logo加到原图上 ,利用线性混合构建掩膜,其中logo权重是0.3,原图中的ROI区域图像是0.5
- addWeighted(imageROI,0.5,logoImage,0.3,0.,imageROI);
- //【4】显示结果
- namedWindow("<4>区域线性图像混合示例窗口 by浅墨");
- imshow("<4>区域线性图像混合示例窗口 by浅墨",srcImage4);
转载自:https://blog.csdn.net/qq_35859033/article/details/77165157
Opencv--addWeighted()相关推荐
- Opencv 图片融合 addWeighted性能测试
原文:http://blog.csdn.net/u011503970/article/details/18615537 这次介绍OpenCV中一个简单的点运算函数,用来实现图片合成. 对应于例程中的 ...
- 【opencv4】opencv视频教程 C++ 6、图像混合、线性混合、混合权重相加addWeighted()、混合加add()、混合乘multiply()
上一讲:[opencv4]opencv视频教程 C++ 5.读写图像imread.imwrite.读写像素at<>().修改像素值.ROI区域选择(图像裁剪)Rect.Vec3b与Vec3 ...
- [OpenCV] 练习题实现代码 使用 cv.addWeighted 函数在文件夹中创建图像的幻灯片放映,并在图像之间进行平滑过渡
1.问题背景 opencv 官方手册 文档 练习题 练习题实现代码 使用 cv.addWeighted 函数在文件夹中创建图像的幻灯片放映,并在图像之间进行平滑过渡 2.代码部分 按任意键切换幻灯片 ...
- OpenCV 矩阵常用操作,比如 addWeighted, flip, hconcat, reduce, merge, norm, repeat, split, sort, mulSpectrum 等
平时经常会用到一些 C++ OpenCV 矩阵 Mat 常用的函数,每次用到都要到官网去查看,现在特地整理了一下. 下面的函数均来自于 https://docs.opencv.org/master/d ...
- OpenCV这么简单为啥不学——1.10、addWeighted设置图片透明度
OpenCV这么简单为啥不学--1.10.addWeighted设置图片透明度 目录 OpenCV这么简单为啥不学--1.10.addWeighted设置图片透明度 前言 cv2.addWeighte ...
- 【OpenCV】OpenCV函数精讲之 -- addWeighted()函数(线性混合)
addWeighted()函数用来计算两个数组(图像阵列)的加权和. 格式如下: void addWeighted(InputArray src1, double alpha, InputArray ...
- opencv: 图片 设置 透明度 并 叠加(cv2.addWeighted)
API cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) → dst. 其中,alpha 为 src1 透明度,beta ...
- 《OpenCV3编程入门》学习笔记7 图像变换(一)基于OpenCV的边缘检测
第7章 图像变换 7.1 基于OpenCV的边缘检测 7.1.1 边缘检测的一般步骤 1.滤波:边缘检测算法主要基于图像强度的一阶和二阶导数,导数对噪声敏感,所以要滤波 2.增强:确定图像各点邻域强度 ...
- OpenCV+python:图像梯度
1,图像梯度的概念 梯度简单来说就是求导,在图像上表现出来的就是提取图像的边缘(无论是横向的.纵向的.斜方向的等等),所需要的是一个核模板.模板的不同结果也不同.所以能够看到,全部的这些个算子函数,归 ...
- OpenCV+python:像素运算
一.数值运算(调节亮度,调整对比度) OpenCV提供的图片色素的处理函数(运算的要求:两张图片的shape要一样): (1)相加:add() (2)相减:subtract() (3)相乘:divid ...
最新文章
- Java程序员高效开发必备工具,其中有你的最爱吗?
- 安全戴尔服务器销售,PowerEdge T340
- 男生计算机学校,杭州2021年男生读什么计算机学校
- Transaction事务
- python整数类型进制表示_Python的基本数值类型
- 微信小程序初识到躺坑
- JS编程:查找数组元素位置
- 华为android已锁定,教你如何查看华为手机是否己解锁bootloader
- 超声波测距仪编程_超声波测距详细资料及程序代码
- 2019-9-2-win10-uwp-切换主题
- springboot+vue项目部署到外网服务器的完整步骤(前后端分离 分别部署)
- 交大『云观CD-ROMIII』直接由CD-ROM执行之安装法(转)
- 1008: 美元和人民币 ZZULIOJ
- 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础
- 手把手带你打造自己的UI样式库(第三章)之常用样式组件的设计与开发
- 标志寄存器的状态标志
- 什么是架构即代码( Infrastructure As Code)
- mesh 协调器 路由器_双模网络协调器、双模路由器、双模mesh组网系统及其方法与流程...
- pink老师JavaScript视频教程笔记
- 2021南京航天航空大学820自动控制原理参考答案
热门文章
- 面试精讲之面试考点及大厂真题 - 分布式专栏 09 缓存必问:Reids持久化,高可用集群
- Centos7.4系统下安装httpd,mariadb,php7.1环境运行禅道
- Docker for windows 容器内网通过独立IP直接访问的方法
- npm切换淘宝源,yarn切换淘宝源
- #JAVA# 判断从键盘输入的字符串是否为回文
- C#LeetCode刷题-字符串
- selenium基础入门
- linux shell 读取文件脚本
- java 学到什么实习_我的外展实习从今天开始! 到目前为止,这是我已经完成并学到的东西。...
- 小程序使用sass_如何使用Sass Maps生成所有实用程序类