最近在随浅墨的博客学习OpenCV,受益匪浅,这系列博客记录OpenCV的学习历程,也对自己的学习做一个笔记。
首先感谢浅墨的OpenCV学习系列教程,帮助很大,在此添加浅墨文章的链接。
以下结合教程写出关于使用OpenCV实现图像叠加的代码以及一些原理解释,同时结合MATLAB进行学习。
图像的叠加:
由浅入深一步一步学习,首先实现图像叠加,这里添出background图(大图),logo图(小图),实现logo嵌入background任意感兴趣部分,这里有两种方法,先把两种方法的代码添出,再做进一步讨论。先添图片,background和logo。
background:
logo:
方法一:
//---------------------------------------------------------------------------
// 【程序说明】
// 实现功能:图像叠加
// 重要函数:imread,imshow,namedWindow(可参考浅墨文章)
// Rect,Range,copyTo,addWeighted(参考文章分解)
//---------------------------------------------------------------------------
#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
int main( )
{
Mat background= imread("dota2.jpg");
Mat logo= imread("logo.jpg");
//载入后先显示
namedWindow("background");
imshow("background",background);
namedWindow("logo");
imshow("logo",logo);
Mat imageROI_1;
//ROI图像与原始图像共享数据
imageROI_1=background(Rect(200,10,logo.cols,logo.rows));
namedWindow("imageROI_1");
imshow(