在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; }