OpenCV之线性混合操作

本文介绍了如何使用OpenCV进行图像线性混合操作,通过`addWeighted`函数实现两个图像按比例混合。代码示例展示了读取图像、设置权重比例以及混合效果的展示。图像混合的关键在于指定每个图像的权重,权重之和为1。参数5`gamma`通常设为0,不改变整体图像。最后展示了混合图像的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenCV书中线性混合操作

个人理解

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

代码

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/video.hpp>

using namespace cv;
using namespace std;


int main(int argc, char** argv)
{
	//0.定义一些局部变量
	double alphaValue = 0.5;
	double betaValue;
	Mat srcImage2, srcImage3, dstImage;

	//1.读取图像,两幅图片必须同样的尺寸和类型
	srcImage2 = imread("700erha.jpg");
	srcImage3 = imread("700levi.jpg");

	//2.做图像混合加权操作
	betaValue = 1.0 - alphaValue;
	addWeighted(srcImage2, alphaValue, srcImage3, betaValue, 0.0, dstImage);

	//3.创建并显示原图
	namedWindow("原图", 1);
	imshow("原图", srcImage2);

	namedWindow("效果图", 1);
	imshow("效果图", dstImage);


	waitKey(0);
	return 0;
}

解析

用到的OpenCV中的API

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:默认参数

注意点:两张图像的大小和类型必须一致才可以。

 简单的说就是要把两个图混合起来,就需要两个图像数据,并且知道我们要混合的两个图像自己所占的比重,比重和为1,比重越大,则在混合图像中越明显,通常比重为1或者为0基本没什么意义。

ps: 参数5 gamma值是额外添加的一个标量,可以让整体图有所改变,一般都是设为0

效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值