图像可以通过不同的方式进行组合,因为它们是矩阵的形式,Opencv提供了各类运算符,这里做一个简单的测试。
例:图像相加,叠加信息。调用的函数是cv::add(cv::addWeighted 加权和)
cv::addWeighted(image1,0.7,image2,0.9,0.,result)
二元算数函数的工作方式都是接受两个输入变量一个输出变量,特定情况需要一些权重作为标量因子。
以cv::add为例:
C[i]=A[i]+B[i]------> cv:add(imageA,imageB,resultC);
C[i]=A[i]+k --------> cv:add(imageA,cv::Scalar(k),resultC);
C[i]=k1*a[i]+k2*b[i]+k3------------->cv::addWeighted(imageA,k1,imageB,k2,k3,resultC);
扩展实例:
//创建一个图像向量
std::vector<cv::Mat>image;
//将一个三通道图像分量为3个单通道图像
cv::split(image1,image);
//将新图层叠加到蓝色通道(opencv的顺序是BGR)
image[0]+=image2;
//将3个单通道合并
cv::merge(image,result);