opencv实现图片的复制与插入

这里的图片的复制与插入是指将一幅图片粘贴在另一张图片上,类似于下图所示,常常用于将自己的图片加上一个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;
}

运行的结果也如上。

猜你喜欢

转载自blog.csdn.net/yuan123890/article/details/109221649