opencv——图像混合

图像混合

图像混合就是将两个尺寸一样的图像按照一定的比例混合到一起,比如我们配置颜料,我们也是按照一定的比例去配置,所有的比例之和为1。

混合的方法有很多种,这里讲加权,相加,相乘

算法原理

我们用函数来表示一个图像,前提是所有的图像尺寸是一样的,即图像矩阵的行列一样,通道数一样

我们用 f0(x) 和 f1(x) 来表示输入的图像,用 g(x) 来表示输出图像,α表示比例( 0≤α≤1 ,一般来说,α取0和1没有太大意义),那我们能得到如下图所示的一个公式。
在这里插入图片描述
意思就是,两幅图像分别占的比例加起来是1,然后生成新图像
你也可以理解为,图像f1占比a,图像f0占比1-a,他们拼成图像gx

API

addWeighted
weighted是加权的意思,知道这个也就能很好的理解图像混合了,就是两张图象加权和

CV_EXPORTS_W void addWeighted(
    InputArray src1, 
    double alpha, 
    InputArray src2,                     
    double beta,
    double gamma, 
    OutputArray dst, 
    int dtype = -1
);

参数1:输入图像Mat – src1

参数2:输入图像src1的alpha值(所占比重)

参数3:输入图像Mat – src2

参数4:输入图像src2的beta值(所占比重)

参数5:gamma值

参数6:输出混合图像

参数7:默认参数,不用管

要求两张图象大小一致

add

add(src1, src2, dst, mask, dtype)

src1:第1个输入图像或标量
src2:第2个输入图像或标量 dst:相加后的输出图像
mask:8位单通道图像,用于指定哪些像素需要相加
dtype:输出图像的深度(像素值位数)

后两个参数可有可无

multiply

multiply(src1, src2, dst=None, scale=None, dtype=None)

src1:第1个输入图像或标量
src2:第2个输入图像或标量 dst:相加后的输出图像
mask:8位单通道图像,用于指定哪些像素需要相加
dtype:输出图像的深度(像素值位数)

后两个参数可有可无

代码演示

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char** argv) {
	Mat src1, src2, dst;
	src1 = imread("C:/Users/86176/Pictures/pics/lena(1).tiff");
	src2 = imread("C:/Users/86176/Pictures/pics/woman1.tiff");
	if (!src1.data) {
		cout << "could not load image which named boy.png..." << endl;
		return -1;
	}
	if (!src2.data) {
		cout << "could not load image named girl.png..." << endl;
		return -1;
	}

	double alpha = 0.5;
	if (src1.rows == src2.rows && src1.cols == src2.cols && src1.type() == src2.type()) {
		addWeighted(src1, alpha, src2, (1.0 - alpha), 0.0, dst);
		// multiply(src1, src2, dst, 1.0);
		//add(src1, src2, dst, Mat());

		imshow("src1", src1);
		imshow("src2", src2);
		imshow("dst", dst);
	}
	else {
		printf("could not blend images , the size of images is not same...\n");
		return -1;
	}

	waitKey(0);
	return 0;
}

现象

src1
在这里插入图片描述
src2
在这里插入图片描述

addWeighted
在这里插入图片描述
看起来还可以的双重曝光效果

add
在这里插入图片描述
这个时候发现图像不是很好看

multiply

在这里插入图片描述
很难看

总结

使用图像混合时,一定要综合各种方案的效果进行综合选择

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Spark!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值