27.java openCV4.x 入门-Imgproc之图像线性混合
| 专栏简介 | ||
💒个人主页 | 📖心灵鸡汤📖 我们唯一拥有的就是今天,唯一能把握的也是今天 建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫 | 📰专栏目录 |
一、线性混合
| 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之膨胀与腐蚀 |
