2つのMatを入力に、その和を求めることができます。下の例では、上段のそれぞれ円が描画されたMatを足し合わせています。下段左は単純な和、下段右は重み付きの和です。単純な和がimg1+img2で表されるとするなら、重み付きの和とはすなわち、img1a+img2b+cを計算します。下のコードでは、addWeighted(img1, 1, img2, 2, 20, output_img2)となっているので、out_img2にimg11+img22+20を代入しています。足し算に関数を使わず、+記号を用いることもできます。同様に、掛け算なら*記号、引き算なら-記号を使うことができます。




#include "opencv/cv.h"
#include "opencv/highgui.h"
using namespace cv;
int main(){
Mat img1 = Mat::zeros(500, 500, CV_8UC1);
circle(img1, cv::Point(200, 250), 100, Scalar(100), 30, 4);
Mat img2 = Mat::zeros(500, 500, CV_8UC1);
circle(img2, cv::Point(300, 250), 100, Scalar(50), 30, 4);
Mat output_img1;
Mat output_img2;
add(img1,img2,output_img1); //単にoutput_img1=img1+img2;としてもよい
imshow("1",output_img1);
addWeighted(img1, 1, img2, 2, 20, output_img2); //単にoutput_img1=img1*1+img2*2+20;としてもよい
imshow("2",output_img2);
waitKey(0);
return 0;
}