图像的加减乘除:
void add(InputArray src1, InputArray src2, OutputArray dst,InputArray mask=noArray(), int dtype=-1);
void subtract(InputArray src1, InputArray src2, OutputArray dst,InputArray mask=noArray(), int dtype=-1);
void multiply(InputArray src1, InputArray src2,OutputArray dst, double scale=1, int dtype=-1);
void divide(InputArray src1, InputArray src2, OutputArray dst,double scale=1, int dtype=-1);
void divide(double scale, InputArray src2, OutputArray dst, int dtype=-1);
void scaleAdd(InputArray src1, double alpha, InputArray src2, OutputArray dst);
void addWeighted(InputArray src1, double alpha, InputArray src2,double beta, double gamma, OutputArray dst, int dtype=-1);
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat res = imread("D:\picture/caomei.jpg");
Mat dst = imread("D:\picture/caomei2.png");
Mat str;
if (res.empty()) {
printf("could not load Image... \r\n");
return -1;
}
if (dst.empty()) {
printf("could not load Image... \r\n");
return -1;
}
namedWindow("Input Image1",CV_WINDOW_AUTOSIZE);
imshow("Input Image1",res);
namedWindow("Input Image2", CV_WINDOW_AUTOSIZE);
imshow("Input Image2", dst);
if ((res.cols == dst.cols) && (res.rows == dst.rows)) {
double alpha = 0.5;
//addWeighted(res,alpha,dst,(1-alpha),0.0,str); // 后面那个0.0 类似增益 str = 0.5res + (1 - 0.5)dst + 0.0
//add(res,dst, str); // str = res + dst
//add(res, Scalar(255, 0, 0), str); // str = res + Scalar()
multiply(res, dst, str, 1.0); // str = res * dst * 1.0
//multiply(res, dst, str, 1.0);
//multiply(res, dst, str, 1.0);
imshow("Output Image",str);
}
else {
printf("Two image size is not same \r\n");
}
//imwrite("D:\picture/caomei3.jpg",str);
waitKey(0);
return 0;
}