opencv对图片的基本操作(mac平台下):读取图片、叠加图片(打水印)、输出图片

  • 需求:将一张小图叠加到大图上
  • 首先需要一张大图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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容