图像合成本质上是alpha blending,也称为alpha融合,数学表达如下
y = alpha * x1 + (1 - alpha) * x2
opencv中提供了融合函数,可进行单通道或多通道整合(本质上是各个通道分别整合),如下为官方文档描述。
对于c++版本,有7个参数,分别是:
- src1,输入图像1
- alpha,src1的权重
- src2,输入图像2
- beta,src2的权重
- gamma,结果偏移
- dst,输出图像
- dtype,输出图像的位宽设置,默认为-1,此时输出图像位宽等于src1的位宽
该方法公式如下:dst = src1alpha + src2beta + gamma;
对于更便捷的python来说,方法为cv2.addWeighted,参数与c++版本基本一样,后面直接看代码。
1.opencv图像融合c++实现
直接show代码:
#include "opencv2/highgui/highgui.hpp"
#include <opencv2/imgproc/imgproc.hpp>
#include "opencv2/opencv.hpp"
#include <opencv2/core/core.hpp>
#include <iostream>
#include <stdio.h>
using namespace cv;