計算兩個數組中每個元素的和
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的大小要相等,不相等的話不能通過啊,所以我在原圖上加了小圖。結果圖: