OpenCV 图片叠加(add、addWeighted)

图片可以用不同方式组合,就像矩阵运算,各个相对像素做加减乘除.这边介绍如何使用addweight()和add()函数将输入影像就行混合,addweighted()和add()只能处理相同大小的图片。

 void  add(InputArray src1, InputArray src2, OutputArray dst, InputArray mask= niArray(), int dtype=1)

  • src1:   输入图或强度值
  • src2:  输入图或强度值
  • dst:   输出图,输出图和输入图有相同的尺寸和通道数
  • mask: 可有可无的遮罩,8位元单通道图,指定那些像素要计算
  • dtype: 可有可无的输出图深度

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

  • src1:   输入图或强度值
  • alpha: src1的权重
  • src2:  输入图或强度值,和src1的尺寸和通道数相同
  • beta: src2的权重
  • gamma: 两图相加后再增加的值
  • dst:  输出图,输出矩阵和输入矩阵有相同的尺寸和通道数
  • dtype: 可有可无的输出图深度

Mat imgA,imgB,imgC;

a[i]、b[i]、c[i]分别为三张图中的某个像素

add(imgA,imgB,imgC);  //c[i] = a[i] + b[i];

add(imgA,Scalar(20),imgC);  // c[i] = a[i] +20;

addWeighted(imgA,0.8,imgB,0.5,10,imgC);  // c[i] = 0.8* a[i] +0.5*b[i] +10;

scaleAdd(imgA,1.2,imgB,imgC);   // c[i] = 1.2*a[i] + b[i]

add(imgA,imgB,imgC,mask);       // if(mask[i]) c[i] = a[i]+b[i]

 

------------------示例: ------------------------------------------------------------

Mat src1 = imread("input1.jpg",CV_LOAD_IMAGE_UNCHANGE);

Mat src2 = imread("input2,jpg",CV_LOAD_IMGAE_UNCHANGE);

Mat dst;

addWeighted(src1,0.5,src2,0.5,0,dst);  //各占0.5的百分比相加图片

imshow("addWeightedImg",dst);

waitKey(0) ;                                       

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

落寞的雪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值