利用split和merge两个函数数,借助于vector向量类型的channel来实现图像多通道的分离和组合:
#include<cv.h>
#include<highgui.h>
#include<iostream>
#include<vector>
using namespace cv;
using namespace std;
int main()
{
vector<Mat> imagechannel;
Mat im = cv::imread("C:\\Users\\Administrator\\Desktop\\3.jpg");
split( im, imagechannel);
Mat Gm = imagechannel.at(0);
Mat Rm = imagechannel.at(1);
Mat Bm = imagechannel.at(2);
namedWindow("channels");
imshow("channels",Rm);
Mat result_image;
Mat blank_ch = cv::Mat::zeros(cv::Size(im.cols, im.rows), CV_8UC1);
vector<Mat>channel_r;
channel_r.push_back(blank_ch);
channel_r.push_back(blank_ch);
channel_r.push_back(Rm);
merge(channel_r, result_image);
imshow("r_channel",result_image);
waitKey(0);
}