使用OpenCV融合图像

最近在看《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, and cv:: 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 输出数组深度,可选

你可能感兴趣的:(ios,opencv,图像融合,blendimage)