最近在看《iOS Application Development with OpenCV 3》这本书,其中有讲到融合图像函数的函数,这里记录一下。
部分原文摘录如下
With OpenCV, these blending modes can be implemented as combinations of arithmetic functions such as
cv:: addWeighted
,cv:: subtract
, andcv:: multiply
, which are described in the API documentation at http:// docs.opencv.org/ 3.1.0/ d2/ de8/ group__core__array.html.
我们可以访问OpenCV:Operations on arrays来看这些函数的官方文档。
这里只对以下3个函数作简单说明
cv:: addWeighted
cv:: subtract
cv:: multiply
1.cv:: addWeighted
(1)函数原型
void cv::addWeighted (InputArray src1,
double alpha,
InputArray src2,
double beta,
double gamma,
OutputArray dst,
int dtype = -1
)
(2)函数功能
计算两个数组的加权和。
(3)计算公式
dst = src1 * alpha + src2 * beta + gamma;
(4)参数解析
参数 | 含义 |
---|---|
src1 | 第一个输入数组 |
alpha | 第一个数组的权重 |
src2 | 第二个输入数组,大小和通道数同src1 |
beta | 第二个数组的权重 |
gamma | 加到每一个总和的标量 |
dst | 输出数组,大小与通道数与输入数组相同 |
dtype | 输出数组的深度,可选。 当输入数组有相同的深度时,其可设置为1,这相当于src1的深度 |
2.cv:: subtract
(1)函数原型
void cv::subtract (InputArray src1,
InputArray src2,
OutputArray dst,
InputArray mask = noArray(),
int dtype = -1
)
(2)函数功能
计算两个数组或数组和一个标量之间的元素差异。
(3)计算公式
dst = src1 - src2;
//equivalent to subtract(dst, src1, dst);
dst -= src1;
(4)参数解析
参数 | 含义 |
---|---|
src1 | 第一个输入的数组或标量 |
src2 | 第一个输入的数组或标量 |
dst | 输出数组 |
mask | 操作掩码,可选。 这是一个8位单通道数组,指定要更改的输出数组的元素。 |
dtype | 输出数组深度,可选 |
3.cv:: multiply
(1)函数原型
void cv::multiply (InputArray src1,
InputArray src2,
OutputArray dst,
double scale = 1,
int dtype = -1
)
(2)函数功能
计算两个数组的元素比例乘积。
(3)参数解析
参数 | 含义 |
---|---|
src1 | 第一个输入的数组 |
src2 | 第二个输入数组,大小和类型同src1 |
dst | 输出数组,大小和类型与src1相同 |
scale | 比例因素,可选 |
dtype | 输出数组深度,可选 |