计算机视觉中处理的图片多是BGR三通道图像,有时根据需要会将图像按照通道分割,有时会将多个通道的图像进行组合成一幅图像,特别是做图像层融合时。OpenCV提供了两个函数split()和merge()来实现图像的通道分割和合并。
通道分割split():
vector<Mat> channels;
split(image1, channels);//分割image1的通道
split(imageROI2, channels);
Mat channels1 = channels[0];//获取通道1
Mat channels2 = channels[1];//获取通道2
Mat channels3 = channels[2];//获取通道3
通道合并merge():
Mat MultiImage;
merge(channels, MultiImage);
合并后回合原图一样
这里主要想表达的是我们可以通过merge()函数将几个不同图像的单通道的图形合并成一个多通道的图像,可以实现特征融合中的像素层级别的融合
Mat srcImage1 = imread("C:/Users/Administrator/Desktop/1.jpg",0);
Mat srcImage2 = imread("C:/Users/Administrator/Desktop/2.jpg",0);
Mat srcImage3 = imread("C:/Users/Administrator/Desktop/3.jpg",0);
resize(srcImage1, srcImage1, Size(200, 200));
resize(srcImage2, srcImage2, Size(200, 200));
resize(srcImage3, srcImage3, Size(200, 200));
vector<Mat> channels;
channels.push_back(srcImage1);
channels.push_back(srcImage2);
channels.push_back(srcImage3);
Mat MultiImage;
merge(channels, MultiImage);
原则上是可以将多个通道的图像进行合并的,只要他们的尺寸大小相同。