常言道“温故而知新”,写此文章就是对自己目前学习内容的小小的总结与记录。

本文力求用最简洁的语言,详细的代码将此部分内容讲解清楚,但由于博主同样是刚刚接触OpenCV,或许表达上有些瑕疵,还望读者能够指教探讨,大家共同进步。

博主机器配置为:VS2013+opencv2.4.13+Win-64bit。

若本文能给读者带来一点点启示与帮助,我就很开心了。

===========================分割线========================

如何利用ROI获取图像,请看【拜小白opencv】8-感兴趣区域ROI图像获取操作

本节将利用ROI将一幅图像叠加到另一幅图像的指定位置。

具体过程见下面代码


=======================分割线========================

代码演示

/*利用ROI将一幅图像叠加到另一幅图像的指定位置
*/#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace std;
using namespace cv;int main()
{//【1】读入两幅图像并检查图像是否读取成功  Mat srcImage = imread("D:\\OutPutResult\\ImageTest\\dog1.jpg");Mat signal = imread("D:\\OutPutResult\\ImageTest\\signal.jpg");if (!srcImage.data || !signal.data){cout << "读取图像有误,请重新输入正确路径!\n";return false;}imshow("【萌宠】", srcImage);imshow("【信号】", signal);//【2】定义一个Mat类型并给其设定ROI区域Mat imageROI = srcImage(Rect(450, 20, signal.cols, signal.rows));   //450,20为自定义起始点坐标//【3】加载掩模(必须是灰度图)Mat mask = imread("D:\\OutPutResult\\ImageTest\\signal.jpg", 0);  //参数0显示为灰度图//【4】将掩模复制到ROIsignal.copyTo(imageROI, mask);//【5】显示结果namedWindow("利用ROI实现图像叠加");imshow("利用ROI实现图像叠加", srcImage);waitKey(0);return 0;
}

==========================分割线============================


显示结果


=========================分割线======================

程序说明

我们会看到程序里有这么一行代码
signal.copyTo(imageROI, mask);

括号里,第一个参数表示为输出图像,第二参数表示为掩码(or掩模)。

我们也可以将这部分内容这么改,见下图:

改后的就不带mask参数,其结果显示都是一样的,那么如何理解带mask参数的这种方式呢?
答:对于形如函数srcImage.copyto(dstImage, mask),mask作为一个掩模板。
函数会检测mask中如果在某个像素点(i, j)其值为1(只看第一通道,所以mask单通道即可)则把srcImage.at(i, j)处的值直接赋给dstImage.at(i, j);如果其值为0则dstImage.at(i, j)处保留其原始像素值。
===============================END============================

【拜小白opencv】15-利用ROI将一幅图像叠加到另一幅图像的指定位置相关推荐

  1. 【拜小白opencv】14-只去除RGB的某一颜色通道

    常言道"温故而知新",写此文章就是对自己目前学习内容的小小的总结与记录. 本文力求用最简洁的语言,详细的代码将此部分内容讲解清楚,但由于博主同样是刚刚接触OpenCV,或许表达上有 ...

  2. 利用python调用本地摄像头拍照,对图片命名并保存到指定位置,带界面

    1.需求: 因项目需要做一个以图搜图的小程序,需要储备零件图库,约1000种 2.原计划&痛点 原本想通过手机挨个拍照,再拷贝出来,重命名,这样会耽误大量时间,且容易出错 3.解决方案 于是做 ...

  3. 【拜小白opencv】45-二维H-S直方图绘制----calcHist()函数、minMaxLoc()函数

    常言道"温故而知新",写此文章就是对自己目前学习内容的小小的总结与记录. 本文力求用最简洁的语言,详细的代码将此部分内容讲解清楚,但由于博主同样是刚刚接触OpenCV,或许表达上有 ...

  4. 转载:【OpenCV入门教程之四】 ROI区域图像叠加初级图像混合 全剖析

    [OpenCV入门教程之四] ROI区域图像叠加&初级图像混合 全剖析 浅墨_毛星云 2014-03-10 12:48:05 157425 收藏 19 最后发布:2014-03-10 12:4 ...

  5. 转自:拜小白教你OpenCV3.2.0+VS2017开发环境配置

    拜小白教你OpenCV3.2.0+VS2017开发环境配置 本文转载自<拜小白教你OpenCV3.2.0+VS2017开发环境配置>.转载链接. https://blog.csdn.net ...

  6. Opencv中的ROI介绍

    Opencv中的ROI介绍 (2013-03-27 13:36:26) 转载▼   分类: 模式识别         ROI(Region of Interest)是指图像中的一个矩形区域,可能你后续 ...

  7. 【opencv学习笔记】第五篇:访问图像中像素的三种方式、ROI区域图像叠加和图像混合

    1. 访问图像中像素的三种方式 任何图像处理算法,都是从操作每个像素开始的.在OpenCV中,提供了三种访问每个像素的方法. 方法1:指针访问:C操作符[] 方法2:迭代器iterator 方法3:动 ...

  8. opencv 手选roi区域_【OpenCV】选择ROI区域

    问题描述:在测试目标跟踪算法时,需要选择不同区域作为目标,进行目标跟踪,测试目标跟踪的效果. 解决思路: 1.OpenCV中提供了鼠标交互控制,利用setMouseCallback()给固定的窗口设置 ...

  9. 小白opencv的入门处理技巧

    小白opencv的入门处理技巧 在这里插入代码片@TOC** 在这里插入代码片 import cv2 import numpy as np #i=cv2.imread("D:\\TP\\MT ...

  10. Opencv之利用matchshape算子实现简单的形状匹配

    Opencv之利用matchshape算子实现简单的形状匹配 算子: matchShapes( InputArray contour1, InputArray contour2, int method ...

最新文章

  1. mysql进程内存不足_故障排除指南:MySQL的运行内存不足怎么办?
  2. 谈谈Javascript闭包
  3. 指针变量p与“零值”进行比较的if 语句怎么写?
  4. C/C++隐式类型转换导致的若干问题
  5. [Python人工智能] 三.theano实现分类神经网络及机器学习基础
  6. activity 防止多次打开_Android开发Activity任务和返回栈
  7. java 变量序列化_Java序列化与静态变量
  8. 分别采用深度优先遍历和广度优先遍历判断是否存在由vi到vj的路径,图用邻接表存储
  9. 向日葵,teamviewer
  10. 在 Linux 中配置 tftpboot 服务器的 10 个步骤
  11. 1000句英语经典口语(9)
  12. tf.convert_to_tensor
  13. 1-2 二十四点 (20 分)【Csp认证真题】
  14. 递归解九连环并且打印中间过程
  15. CocoStudio UI 编辑器的使用
  16. Catalan数的分析和应用
  17. Dump分析学习指令整理
  18. numpy.sum中axis参数用法解析
  19. 资料随意收集(1):Lotus Notes常见问题解决办法(实用--转帖)
  20. C++中auto关键字编译错误解决

热门文章

  1. python连连看小游戏_python tkinter实现连连看游戏
  2. Windows下DOS操作系统(cmd)详解
  3. 在线解答:怎么拥有TrustedInstaller权限?
  4. 魔兽世界用宏显示服务器时间,魔兽世界宏命令全表
  5. 视频加密软件技术小分享
  6. HBase各版本对Hadoop版本的支持情况
  7. Netlog中数据库演变过程(转载)
  8. 情感分类(Sentiment Classification)
  9. 计算机网络---网络编程套接字(二)
  10. 微信模拟地理位置_微信伪装地理位置是什么个原理