- 需求:将一张小图叠加到大图上
- 首先需要一张大图image1(300 * 300)和一张小图image2(100 * 100)(水印)
如有侵权,烦请告知,马上替换,谢谢!
image1.jpg
image2.jpg
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main( int argc, char** argv ){
//=========== 叠加一张图片(打水印) ===========
//image1.jpg image2.jpg
//底图
Mat mat_image_src = imread("/Users/laimin/Downloads/image1.jpg");
//水印图
Mat mat_image_dst = imread("/Users/laimin/Downloads/image2.jpg");
//获取底图中需要添加水印的位置
Mat mat_roi = mat_image_src(Rect2i(0, 0, mat_image_dst.cols, mat_image_dst.rows));
//将 mat_roi 的位置设置为 mat_roi * 0 + mat_image_dst * 1 + 0 的值
// addWeighted(mat_roi, 0, mat_image_dst, 1, 0, mat_roi);
addWeighted(mat_roi, 0.5, mat_image_dst, 0.5, 0, mat_roi);
//设置窗口
namedWindow("叠加图片");
//显示图片
imshow("显示图片", mat_image_src);
//输出图片到本地
imwrite("/Users/laimin/Downloads/image_result.jpg", mat_image_src);
//窗口停留
waitKey();
return 0;
}
-
输出结果
文件
image_result.jpg