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之膨胀与腐蚀 |
更多推荐



所有评论(0)