在某些应用场景中我们对图像的操作仅限于图像的某一特定的区域,比如识别码、一张图片上面的字符,那么只需要处理带字符的那个区域就可以,也就是我们常说的ROI
如果想要在一张图片中添加水印,比如在FCJ.jpg这张图片中
的左上部分加上博主的印logo.png
则需要在用到ROI(regions of interest)感兴趣区域。
在将图片融合的过程中使用到OpenCV提供的函数:
<strong>void addWeighted(InputArray src1, double alpha, InputArray src2,double beta, double gamma, OutputArray dst, int dtype = -1); </strong>
通过这个函数实现图片的线性融合,在这个函数的原型中的各个参数分别代表
src1:图片1、alpha:图片1的融合比例、src2:图片2、beta:图片2的融合比例、gamma:偏差。
<strong>//-----------------------------------【程序说明】----------------------------------------------
// 程序名称:图像的载入,显示与输出
// VS2015版 OpenCV版本:3.4.0
// 2018年1月12日 Create by bilidi
// 描述: 图像的载入,显示与输出 一站式剖析
//------------------------------------------------------------------------------------------------
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
//-----------------------------------【一、图像的载入和显示】--------------------------------------
// 描述:以下三行代码用于完成图像的载入和显示
//--------------------------------------------------------------------------------------------------
Mat girl = imread("girl.jpg"); //载入图像到Mat
namedWindow("女孩"); //创建一个名为 "【1】女孩"的窗口
imshow("女孩", girl);//显示名为 "【1】女孩"的窗口
//-----------------------------------【二、初级图像混合】--------------------------------------
// 描述:二、初级图像混合
//-----------------------------------------------------------------------------------------------
//载入图片
Mat image = imread("FCJ.jpg", 199);//
Mat logo = imread("logo.png");
//载入后先显示
namedWindow("发财鸡");
imshow("发财鸡", image);
namedWindow("印章");
imshow("印章", logo);
//定义一个Mat类型,用于存放,图像的ROI
//imageROI和image使用相同的数据,所以imageROI改变image就会改变
Mat imageROI;
//方法一
imageROI = image(Rect(50, 50, logo.cols, logo.rows));
//方法二
//imageROI=image(Range(50,50+logo.rows),Range(50,50+logo.cols));
//将logo加到原图上
addWeighted(imageROI, 0., logo,1.0, 0., imageROI);
//显示结果
namedWindow("发财鸡+印章");
imshow("发财鸡+印章", image);
//-----------------------------------【三、图像的输出】--------------------------------------
// 描述:将一个Mat图像输出到图像文件
//-----------------------------------------------------------------------------------------------
//输出一张jpg图片到工程目录下
imwrite("output.jpg", image);
waitKey();
return 0;
}</strong>