专栏简介

💒个人主页
📖心灵鸡汤📖

我们唯一拥有的就是今天,唯一能把握的也是今天


建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫
📰专栏目录
@[TOC]()

一、线性混合

blendLinear​(Mat src1, Mat src2, Mat weights1, Mat weights2, Mat dst)
参数:
src1 第一个输入图像
src2 第二个输入图像
weights1 第一个输入图像的权重矩阵
weights2 第二个输入图像的权重矩阵
dst 输出图像,用于存储混合结果
示例一
        Mat src1 = new Mat(3,3, CvType.CV_8UC1);
        src1.put(0,0,1,2,3,4,5,6,7,8,9);

        Mat src2 = src1.t();

        System.out.println("src1.dump() = \n" + src1.dump());
        System.out.println("src2.dump() = \n" + src2.dump());
        // 创建两个权重矩阵
        Mat weights1 = new Mat(src1.size(), CvType.CV_32FC1, new Scalar(0.5));
        Mat weights2 = new Mat(src2.size(), CvType.CV_32FC1, new Scalar(0.5));
        Mat dst = new Mat();
        Imgproc.blendLinear(src1,src2,weights1,weights2,dst);
        System.out.println("dst.dump() = \n" + dst.dump());

结果:

src1.dump() = 
[  1,   2,   3;
   4,   5,   6;
   7,   8,   9]
src2.dump() = 
[  1,   4,   7;
   2,   5,   8;
   3,   6,   9]
dst.dump() = 
[  1,   3,   5;
   3,   5,   7;
   5,   7,   9]

此方法与Mat类的addWeighted方法类似,不同的是它们的总和应该等于1。如果某个像素在两个输入图像中的权重相等,那么在混合后的图像中,该像素的值将等于两个输入图像中对应像素值的平均值。

示例二


        // 读取两个输入图像
        Mat src1 = Imgcodecs.imread("src1.jpg",Imgcodecs.IMREAD_REDUCED_COLOR_4);
        Mat src2 = Imgcodecs.imread("src2.jpg",Imgcodecs.IMREAD_REDUCED_COLOR_4);

        // 创建两个权重矩阵
        Mat weights1 = new Mat(src1.size(), CvType.CV_32FC1, new Scalar(0.5));
        Mat weights2 = new Mat(src2.size(), CvType.CV_32FC1, new Scalar(0.5));

        // 创建目标图像
        Mat dst = new Mat();

        // 调用blendLinear方法进行线性混合
        Imgproc.blendLinear(src1, src2, weights1, weights2, dst);

        // 显示
        HighGui.imshow("src1",src1);
        HighGui.imshow("src2",src2);
        HighGui.imshow("dst",dst);
        HighGui.waitKey();

结果

在这里插入图片描述

万水千山总是情,本栏完全公开免费。
上一篇:Imgproc之图像尺寸调整与区域提取 下一篇:Imgproc之膨胀与腐蚀
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐