#include<opencv2/opencv.hpp>
#include<cv.h>
using namespace cv;
int main() {
Mat mainimg = imread("D://图片//2.jpg"); //融合的底图片
Mat img = imread("D://图片//4.jpg"); //需要融合到目标图的图片
Mat imgroi;
Rect rect(100, 100, img.cols, img.rows); //设置区域,使其区域与需要叠加的图片的大小相同,前两个是叠加的起点坐标
imgroi = mainimg(rect); //公用一个内存
addWeighted(imgroi, 1, img, 0.5, 0, imgroi); //融合,其中三个图片大小通道深度都要相同,1,0.5分别表示各自前面图片的权重,最后一个是最后结果
namedWindow("show");
imshow("show", mainimg); //显示
waitKey(0);
destroyAllWindows;
return 0;
#include<cv.h>
using namespace cv;
int main() {
Mat mainimg = imread("D://图片//2.jpg"); //融合的底图片
Mat img = imread("D://图片//4.jpg"); //需要融合到目标图的图片
Mat imgroi;
Rect rect(100, 100, img.cols, img.rows); //设置区域,使其区域与需要叠加的图片的大小相同,前两个是叠加的起点坐标
imgroi = mainimg(rect); //公用一个内存
addWeighted(imgroi, 1, img, 0.5, 0, imgroi); //融合,其中三个图片大小通道深度都要相同,1,0.5分别表示各自前面图片的权重,最后一个是最后结果
namedWindow("show");
imshow("show", mainimg); //显示
waitKey(0);
destroyAllWindows;
return 0;
}
运行结果:
图片的形状是可以通过mask改变的,之后再使用