一、掩膜操作Mask

在opencv功能(两点):

1、 逻辑运算模板mask;

可以理解为一个字帖模板,
能描的地方就看成是一个Mask,
后续的处理只针对这个Mask来操作

例如:

inline //内联函数
void GpuMat::copyTo(OutputArray dst, InputArray mask) const
{copyTo(dst, mask, Stream::Null());
}
//copyTo函数
CV_WRAP void copyTo(OutputArray dst, InputArray mask, Stream& stream) const;
/*
Src:
123  13  1
3    23  20
32   1   0
Mask :
0   13  1
3   23  0
0   1   24
Dst :
0   13  1
3   23  0
0   1   0*/

只复制了一部分,src与mask进行与操作运算;

2、 卷积核kernel

卷积核可以理解为运算规定,
kernel上是什么相应的像素就如何处理,
处理方式可以理解为简单的线性表出。

见OpenCV矩阵上的掩码操作

二、图像叠加

注意事项:
① 通道数相同;
② Size相同;
实现方法:

 //实现方法1--直接将logo的值拷贝到ROI区域logo.copyTo(Roi_add, logo_gray);//注意这句,原图(logo)与掩膜(logo_gray)进行与运算后得到了被复制图//其像素进行与操作,如果与运算后像素值为0则不拷贝。 //加载掩膜必须为灰度值(我的理解是降低与操作的运算量,但是参数解释说不是灰度图也可以)//实现方法2--使用add方法将ROI区域与logo相加add(Roi_add_1,logo ,Roi_add_1);//实现方法3--符号重载运算Roi_add_2 += logo;//实现方法4--加权叠加addWeighted(Roi_add_3,0.5,logo,0.5,1.0,Roi_add_3);

三、代码

#include <opencv.hpp>
using namespace std;
using namespace cv;void main()
{Mat dst;Mat logo = imread("logo.png");Mat logo_gray;cvtColor(logo, logo_gray, COLOR_BGR2GRAY);Mat src = imread("test.jpg");Mat Roi_add = src(Rect(20,20,350, 84));//Size为logo的SizeMat Roi_add_1 = src(Rect(20, 104, 350, 84));Mat Roi_add_2 = src(Rect(20, 188, 350, 84));Mat Roi_add_3 = src(Rect(20, 188+84, 350, 84));//直接简单叠加//实现方法1--直接将logo的值拷贝到ROI区域logo.copyTo(Roi_add, logo_gray);//注意这句,原图(logo)与掩膜(logo_gray)进行与运算后得到了结果图//其像素进行与操作,如果与运算后像素值为0则不拷贝。 //加载掩膜必须为灰度值(我的理解是降低与操作的运算量,但是参数解释说不是灰度图也可以)//实现方法2--使用add方法将ROI区域与logo相加
/*  Mat bwt,fact;*/
/*  ones.ones(Size(350, 84), CV_8UC3);*/ //此句错误用法
//  bitwise_and(logo, Roi_add_1, bwt);
//  fact = Roi_add_1 - 255*logo;
/*  bitwise_or(Roi_add_1, logo, Roi_add_1, bwt);*/add(Roi_add_1,logo ,Roi_add_1);//实现方法3--符号重载运算Roi_add_2 += logo;//实现方法4--加权叠加addWeighted(Roi_add_3,0.5,logo,0.5,1.0,Roi_add_3);//注意涉及运算结果输出都为深拷贝/*dst = Roi_add + logo;*//*addWeighted(Roi_add, 0, logo, 1, 1, Roi_add);*//*  imshow("dst", dst);*/imshow("src", src);waitKey(0);}

OpenCV学习笔记11_Mask操作与图像叠加相关推荐

  1. 【opencv学习笔记】003之图像像素基本操作(获取像素指针、范围处理)及掩膜操作(filter2D)详解

    目录 一.前言 二.图像像素基本操作 1.获取图像像素指针 1.获取图像像素指针是什么? 2.相应API 3.获取目的 2.像素范围处理saturate_cast 1.像素范围处理是什么? 2.像素范 ...

  2. OpenCV学习笔记(三)——图像像素(图像的最大(小)值、均值、标准差、比较运算、逻辑运算、图像二值化)

    目录 1 图像像素统计 1.1 图像像素的最大值和最小值 1.2 计算图像的均值和标准差 2 两图像间的像素操作 2.1 比较运算 2.2 逻辑运算 3 图像二值化 1 图像像素统计 数字图像可以用大 ...

  3. OpenCV学习笔记(一)图像编程入门

    //题外话:按住Enter键执行的是段落换行,同时按住Enter键和Shift键可以实现逐句换行 //三大件 #include<opencv2/core.hpp> #include< ...

  4. Opencv学习笔记(六)图像形态学处理

    文章目录 形态学变换 主要操作 代码 参考 形态学变换 形态学处理主要应用于二值图像,目的是微调分割区域的形状,获得比较理想的目标图像.腐蚀和膨胀是形态学处理的基础操作,其他操作包括:开运算.闭运算. ...

  5. OpenCv学习笔记(二)--Mat矩阵(图像容器)的创建及CV_8UC1,CV_8UC2等参数详解

    (一)Mat矩阵(图像容器)创建时CV_8UC1,CV_8UC2等参数详解 1--Mat不但是一个非常有用的图像容器类,同时也是一个通用的矩阵类 2--创建一个Mat对象的方法很多,我们现在先看一下M ...

  6. OpenCV学习笔记:创建/分配图像、图像读写保存、图像像素点访问修改

    环境:CentOS7 g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) $ pkg-config --modversion opencv 2.4.13 以下程序的 ...

  7. OpenCV学习笔记(十)——图像卷积(cv.filter2D()、矩阵旋转cv.filp())

    目录 1 图像卷积过程 2 cv.filter2D() 3 cv.filp() 卷积运算在信号处理中十分常见,而图像信息可以看成一种信号.例如,图像的每一行可以看出测量亮度变化的信号,而每一列可以看作 ...

  8. opencv计算图像亮度调节_【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整...

    今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...

  9. OpenCV学习笔记(7)图像的通道(channels)问题

    整理一下OpenCV中文论坛里关于图像通道的问题,如下: (1)图像的通道指的是什么?是不是灰度图的通道数为1,彩色图的通道为3?(zhuker) 正确! 基本上,描述一个像素点,如果是灰度,那么只需 ...

最新文章

  1. ios在异步网络请求上实现同步逻辑
  2. 开机时不显示启动菜单grub
  3. matlab计算原点矩,关于用matlab求样本均值方差以及k阶原点矩的matlab程序
  4. 数据产品通用复合指标查询计算的实践
  5. POJ 1654 Area 凸包面积
  6. python去重语句_Python Dataframe 指定多列去重、求差集的方法
  7. 记一则js替换字符串的问题
  8. 栈的应用1——超级计算器(中缀与后缀表达式)C语言
  9. roseha 11 用VM虚拟机创建集群测试
  10. 运维工程师面试题及答案(网络运维工程师面试题)
  11. 批量语音转文字python
  12. 固态硬盘误格式化恢复图文教程
  13. 计算机中cpu是指什么意思,CPU是什么?CPU又是什么意思?
  14. 网络与信息安全-第三章-对称秘钥加密算法
  15. 内存条是不是计算机主机配置,玩吃鸡电脑要什么配置 主要是CPU,显卡和内存条...
  16. JDK更换IDEA如何修改
  17. Date日期操作-年月日,时分秒获取
  18. 线性代数java包,Jama的常用方法
  19. mysql 分库查询_mysql分库后怎么查询
  20. 斯坦福Dan Boneh密码学——04 流密码

热门文章

  1. matlab读取avi文件出错
  2. 发票管理软件开发中遇到的一些实际问题并解决方案
  3. 银行人脸识别系统被攻破:43万元不翼而飞,“刷脸时代”如何防风险?
  4. 领克全球化战略扩展至中东;万豪国际集团2023年将在全球开设超过35家奢华酒店 | 美通企业日报...
  5. javascript礼品抽奖
  6. 销售ERP软件系统主要包括哪些功能?
  7. 学会python之后可以做哪些兼职?
  8. 基于数据中台的数据治理解决方案
  9. 《Java JDK8学习笔记》读书笔记(4)
  10. 语义分割-Rethinking BiSeNet For Real-time Semantic Segmentation-1-Cityscapes数据集