#include <stdio.h>
 #include "opencv2/core/core.hpp"
 #include "opencv2/features2d/features2d.hpp"
 #include "opencv2/highgui/highgui.hpp"
 #include "opencv2/nonfree/nonfree.hpp"
 #ifndef _DEBUG
 #pragma  comment(lib,"IlmImf.lib")   
 #pragma  comment(lib,"libjasper.lib")    
 #pragma  comment(lib,"libjpeg.lib")   
 #pragma  comment(lib,"libpng.lib")       
 #pragma  comment(lib,"libtiff.lib")  
 #pragma  comment(lib,"zlib.lib")   
 #pragma  comment(lib,"opencv_calib3d2411.lib")
 #pragma  comment(lib,"opencv_contrib2411.lib")
 #pragma  comment(lib,"opencv_core2411.lib")
 #pragma  comment(lib,"opencv_features2d2411.lib")
 #pragma  comment(lib,"opencv_flann2411.lib")
 #pragma  comment(lib,"opencv_gpu2411.lib")
 #pragma  comment(lib,"opencv_highgui2411.lib")
 #pragma  comment(lib,"opencv_imgproc2411.lib")
 #pragma  comment(lib,"opencv_legacy2411.lib")
 #pragma  comment(lib,"opencv_ml2411.lib")
 #pragma  comment(lib,"opencv_nonfree2411.lib")
 #pragma  comment(lib,"opencv_objdetect2411.lib")
 #pragma  comment(lib,"opencv_ocl2411.lib")
 #pragma  comment(lib,"opencv_photo2411.lib")
 #pragma  comment(lib,"opencv_stitching2411.lib")
 #pragma  comment(lib,"opencv_superres2411.lib")
 #pragma  comment(lib,"opencv_ts2411.lib")
 #pragma  comment(lib,"opencv_video2411.lib")
 #pragma  comment(lib,"opencv_videostab2411.lib")
 #else
 #pragma  comment(lib,"zlibd.lib")
 #pragma  comment(lib,"IlmImfd.lib")
 #pragma  comment(lib,"libjasperd.lib")
 #pragma  comment(lib,"libjpegd.lib")
 #pragma  comment(lib,"libpngd.lib")
 #pragma  comment(lib,"libtiffd.lib")
 #pragma  comment(lib,"opencv_calib3d2411d.lib")
 #pragma  comment(lib,"opencv_contrib2411d.lib")
 #pragma  comment(lib,"opencv_core2411d.lib")
 #pragma  comment(lib,"opencv_features2d2411d.lib")
 #pragma  comment(lib,"opencv_flann2411d.lib")
 #pragma  comment(lib,"opencv_gpu2411d.lib")
 #pragma  comment(lib,"opencv_highgui2411d.lib")
 #pragma  comment(lib,"opencv_imgproc2411d.lib")
 #pragma  comment(lib,"opencv_legacy2411d.lib")
 #pragma  comment(lib,"opencv_ml2411d.lib")
 #pragma  comment(lib,"opencv_nonfree2411d.lib")
 #pragma  comment(lib,"opencv_objdetect2411d.lib")
 #pragma  comment(lib,"opencv_ocl2411d.lib")
 #pragma  comment(lib,"opencv_photo2411d.lib")
 #pragma  comment(lib,"opencv_stitching2411d.lib")
 #pragma  comment(lib,"opencv_superres2411d.lib")
 #pragma  comment(lib,"opencv_ts2411d.lib")
 #pragma  comment(lib,"opencv_video2411d.lib")
 #pragma  comment(lib,"opencv_videostab2411d.lib")
 #endif using namespace cv;
static void help()
 {
     printf("\nThis program demonstrates using features2d detector, descriptor extractor and simple matcher\n"
             "Using the SURF desriptor:\n"
             "\n"
             "Usage:\n matcher_simple <image1> <image2>\n");
  getchar();
 }int main(int argc, char** argv)
 {
     //if(argc != 3)
     //{
     //    help();
     //    return -1;
     //} Mat img1 = imread("boldt.jpg");//imread(argv[1], CV_LOAD_IMAGE_GRAYSCALE);
  Mat img2 = imread("rain.jpg", CV_LOAD_IMAGE_GRAYSCALE); //imread(argv[2], CV_LOAD_IMAGE_GRAYSCALE);
  //Mat mask = imread("rainMask.jpg", CV_LOAD_IMAGE_GRAYSCALE);
  //Mat img2 = imread("rainHalf.jpg");
  if(img1.empty() || img2.empty() /*|| mask.empty()*/)
  {
   printf("Can't read one of the images\n");
   return -1;
  } Mat result(img1.rows,img1.cols,img1.type());
 std::vector<cv::Mat> planes;
  //分割一个三通道图像为三个单通道图像
  cv::split(img1,planes);
  planes[2]+=img2;
  cv::merge(planes,result);
  
  //cv::add(img1,img2,result,mask);
  imshow("result", result);
     waitKey(0);    return 0;
 }