在OpenCV中,将两个图片矩阵进行融合变成一个图片用到的是cvAddWeighted函数。在cvAddWeighted函数中,有两个源图象image1 和 image2。两个图象可以是任何象素类型,只要它们的类型相同。它们可以是单通道或是三通道,只要它们相符。但它们的ROI必须有相同的大小,否则会编译出错!
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
Mat image = imread("C:\\Desktop\\1.jpg",199);
Mat logo = imread("C:\\Desktop\\4.jpg");
namedWindow("原画图");
imshow("原画图", image);
namedWindow("logo图");
imshow("logo图", logo);
Mat imageROI;
imageROI = image(Rect(400, 350, logo.cols, logo.rows));
addWeighted(imageROI, 0.3, logo, 0.7, 0., imageROI);//将图像加到原图上
namedWindow("融合效果图");
imshow("融合效果图", image);
waitKey();
return 0;
}
程序运行后,处理后的图像如图: