这里的图片的复制与插入是指将一幅图片粘贴在另一张图片上,类似于下图所示,常常用于将自己的图片加上一个logo的操作。
这里需要注意的是插入图片的尺寸要小于被插入图片的尺寸。
要想完成图片的复制我们需要在被插入图像上选择一块区域,用来放置要粘贴的图片这里用到opencv的Rect()函数
通常该函数有四个参数如下
Rect(A,B,C,D) A和B表示选择区域的起点坐标,C和D表示区域的尺寸
这里需要注意的是AB和CD都是列在前行在后,与像素操作函数at()不同,at()函数是行在前列在后。
那么选择好的区域插入图形是通过copyTo()函数实现的,copyTo是用来复制粘贴图像的,用法如下
img.copyTo(out) :将img的内容复制到out上。
完整的程序如下
#include"opencv2/core/core.hpp"
#include"opencv2/highgui/highgui.hpp"
#include<opencv2/opencv.hpp>
#include"iostream"
using namespace std;
using namespace cv;
void test()
{
Mat Img = imread("ck567.jpg");
Mat logo = imread("1.jpg");
if(Img.empty()&&logo.empty())
{
cout << "fail to load jpg!" << endl;
return;
}
Mat Logo(Img,Rect(Img.cols-logo.cols,Img.rows-logo.rows,logo.cols,logo.rows));
logo.copyTo(Logo);
namedWindow("out");
imshow("out",Img);
cout<<"ck567:"<<Img.rows<<"*"<<Img.cols<<endl;
cout<<"1:"<<logo.rows<<"*"<<logo.cols<<endl;
}
int main()
{
test();
waitKey(0);
return 0;
}
运行的结果也如上。