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