cvAdd
计算两个数组中每个元素的和
void cvAdd( const CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* mask=NULL );
src1
第一个原数组
src2
第二个原数组
dst
输出数组
mask
操作的复盖面, 8-bit单通道数组; 只有复盖面指定的输出数组被修改。
函数 cvAdd 加一个数组到别一个数组中:
dst(I)=src1(I)+src2(I) if mask(I)!=0
结果图:
计算两个数组中每个元素的和
void cvAdd( const CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* mask=NULL );
src1
第一个原数组
src2
第二个原数组
dst
输出数组
mask
操作的复盖面, 8-bit单通道数组; 只有复盖面指定的输出数组被修改。
函数 cvAdd 加一个数组到别一个数组中:
dst(I)=src1(I)+src2(I) if mask(I)!=0
除复盖面外所有的数组必须有相同的类型相同的大小(或ROI尺寸)(不太懂,求解?)
程序:
// cvAdd的使用.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "opencv2/opencv.hpp"
int _tmain(int argc, _TCHAR* argv[])
{
//创建3个窗口
cvNamedWindow("src1");
cvNamedWindow("src2");
cvNamedWindow("dst");
//src1,src2,dst的声明
IplImage* src1;
IplImage* src2;
IplImage* dst;
//加载图像
src1= cvLoadImage("F://Opencv_picture//x.jpg");
src2= cvLoadImage("F://Opencv_picture//y.jpg");
//dst的创建
dst= cvCreateImage(cvGetSize(src1), src1->depth, src1->nChannels);
//cvAdd
cvAdd(src1, src2, dst, NULL);
//显示图片
cvShowImage("src1", src1);
cvShowImage("src2", src2);
cvShowImage("dst", dst);
//暂停
cvWaitKey(0);
//释放内存和销毁窗口
cvReleaseImage(&src1);
cvReleaseImage(&src2);
cvReleaseImage(&dst);
cvDestroyWindow("src1");
cvDestroyWindow("src2");
cvDestroyWindow("dst");
return 0;
}
PS:src1和src2的大小要相等,不相等的话不能通过啊,所以我在原图上加了小图。
结果图: