博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Opencv利用ROI将一张图片叠加到另一幅图像的指定位置
阅读量:6423 次
发布时间:2019-06-23

本文共 1854 字,大约阅读时间需要 6 分钟。

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

===========================分割线========================
本节将利用ROI将一幅图像叠加到另一幅图像的指定位置。
具体过程见下面代码
=======================分割线========================
代码演示

1 /* 2     利用ROI将一幅图像叠加到另一幅图像的指定位置 3 */ 4   5 #include 
6 #include
7 #include
8 #include
9 using namespace std;10 using namespace cv;11 12 int main()13 {14 //【1】读入两幅图像并检查图像是否读取成功 15 Mat srcImage = imread("D:\\OutPutResult\\ImageTest\\dog1.jpg");16 Mat signal = imread("D:\\OutPutResult\\ImageTest\\signal.jpg");17 if (!srcImage.data || !signal.data)18 {19 cout << "读取图像有误,请重新输入正确路径!\n";20 return false;21 }22 imshow("【萌宠】", srcImage);23 imshow("【信号】", signal);24 25 //【2】定义一个Mat类型并给其设定ROI区域26 Mat imageROI = srcImage(Rect(450, 20, signal.cols, signal.rows)); //450,20为自定义起始点坐标27 //【3】加载掩模(必须是灰度图)28 Mat mask = imread("D:\\OutPutResult\\ImageTest\\signal.jpg", 0); //参数0显示为灰度图29 //【4】将掩模复制到ROI30 signal.copyTo(imageROI, mask);31 //【5】显示结果32 namedWindow("利用ROI实现图像叠加");33 imshow("利用ROI实现图像叠加", srcImage);34 waitKey(0);35 return 0;36 }

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

显示结果
=========================分割线======================
程序说明
我们会看到程序里有这么一行代码
 1 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============================

尊重文章著作,此文来源地址:https://blog.csdn.net/sinat_36264666/article/details/77414835

转载于:https://www.cnblogs.com/qiantao/p/9446869.html

你可能感兴趣的文章
CentOS下febootstrap自制Docker的CentOS6.6和7.1 Docker镜像
查看>>
正则化方法:L1和L2 regularization、数据集扩增、dropout
查看>>
统计学习方法概论
查看>>
湖南大学ACM程序设计新生杯大赛(同步赛)H - Yuanyuan Long and His Ballons
查看>>
分布式id生成
查看>>
怎么使用阿里云直播服务应用到现在主流直播平台中
查看>>
Providers、Controller 、Service、DirectiveFactory
查看>>
(转)structs2的相关配置问题
查看>>
块级元素和内联元素的区别与转换
查看>>
android布局方式
查看>>
ECMA数组原型四个常用方法(some,foreach,map,filter)讲解
查看>>
C++Builder之Edit和Memo
查看>>
H5缓存
查看>>
【转】glTexImage2D()和gluBuild2DMipmaps() [将载入的位图文件(*.bmp)转换成纹理贴图]+glTexParameteri()纹理过滤函数...
查看>>
常用的匹配正则表达式和实例
查看>>
TCP通信粘包问题分析和解决
查看>>
python第三周:集合、函数、编码、文件
查看>>
Keyboard/Mouse驱动驱动的工作原理
查看>>
响应式一级到三级导航
查看>>
前端实现图片懒加载(lazyload)的两种方式
查看>>