ROI区域图像叠加

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROI区域图像叠加相关的知识,希望对你有一定的参考价值。

//----------------------------------【ROI_AddImage( )函数】----------------------------------  
// 函数名:ROI_AddImage()  
//     描述:利用感兴趣区域ROI实现图像叠加  
//----------------------------------------------------------------------------------------------  
bool ROI_AddImage()  
{  
   
       //【1】读入图像  
       Mat srcImage1= imread("dota_pa.jpg");  
       Mat logoImage= imread("dota_logo.jpg");  
       if(!srcImage1.data ) { printf("读取srcImage1错误~! \n"); return false; }  
       if(!logoImage.data ) { printf("读取logoImage错误~! \n"); return false; }  
   
       //【2】定义一个Mat类型并给其设定ROI区域  
       Mat imageROI= srcImage1(Rect(200,250,logoImage.cols,logoImage.rows));  
   
       //【3】加载掩模(必须是灰度图)  
       Mat mask= imread("dota_logo.jpg",0);  
   
       //【4】将掩膜拷贝到ROI  
       logoImage.copyTo(imageROI,mask);  
   
       //【5】显示结果  
       namedWindow("<1>利用ROI实现图像叠加示例窗口");  
       imshow("<1>利用ROI实现图像叠加示例窗口",srcImage1);  
   
       return true;  
}  

 这个函数首先是载入了两张jpg图片到srcImage1和logoImage中,然后定义了一个Mat类型的imageROI,并使用cv::Rect设置其感兴趣区域为srcImage1中的一块区域,将imageROI和srcImage1关联起来。接着定义了一个Mat类型的的mask并读入dota_logo.jpg,顺势使用Mat:: copyTo把mask中的内容拷贝到imageROI中,于是就得到了最终的效果图,namedWindow和imshow配合使用,显示出最终的结果。

 

技术分享

 

这里白色的dota2 logo,就是通过操作之后加上去的图像。


以上是关于ROI区域图像叠加的主要内容,如果未能解决你的问题,请参考以下文章

opencv学习笔记访问图像中像素的三种方式ROI区域图像叠加和图像混合

基于opencv的感兴趣区域ROI的操作

OpenCV_复制一个或多个ROI图像区域

获取图像的ROI模板区域

[C#][原创]图像截取特定区域ROI的2种方法

图像处理中ROI是啥意思