方法一:
Mat mergeImage;
Mat mergeImage;
Mat img1 = imread("D://img//GF1_mux_band_3.tif",0);
Mat img2 = imread("D://img//GF1_mux_band_2.tif",0);
Mat img3 = imread("D://img//GF1_mux_band_1.tif",0);
namedWindow("mergeImage",CV_WINDOW_AUTOSIZE);
namedWindow("blue",CV_WINDOW_AUTOSIZE);
vector<Mat> channels;
channels.push_back(img1);
channels.push_back(img2);
channels.push_back(img3);
merge(channels,mergeImage);
imshow("blue",channels.at(0));
方法二:
IplImage* img;
IplImage *img1 = cvLoadImage("D://img//GF1_mux_band_1.tif",0);
IplImage *img2 = cvLoadImage("D://img//GF1_mux_band_2.tif",0);
IplImage *img3 = cvLoadImage("D://img//GF1_mux_band_3.tif",0);
img = cvCreateImage(cvSize(img1->width, img1->height),IPL_DEPTH_8U,3);
cvMerge(img3, img2, img1, 0, img);
cvNamedWindow("merge", 1);
cvShowImage("merge",img);
问题比较简单,两种方法也仅仅是图像格式和读取上的不同,需要注意的是 imread() 和 cvLoadImage() 函数中后边一个参数一定要设置为 0。