首页 > 代码库 > ROI区域图像叠加

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区域图像叠加