opencv实现图片的复制与插入

it2025-12-23  6

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

运行的结果也如上。

 

最新回复(0)