作者:cuijunhao456_715 | 来源:互联网 | 2023-09-18 21:04
有时为了更好的观察一些图像材料的特征,,需要对RGB三个颜色的分量进行分别的显示和调整,通过OpenCV的split和merge方法可以很方便的达到目的。
split()函数:用于将一个多通道数组分离成几个单通道数组,这里的array按语境翻译为数组或阵列。
(一):这个split()函数的C++版本有两个原型,分别是:
<1>C++: void split(const Mat& src, Mat* mvbegin);
<2>C++:void split(InputArray m, OutputArrayOfArrays mv);
变量介绍如下:
第一个参数:src或者m填我们需要进行分离的多通道数组;
第二个参数:mv填输出数组 或者 输出的vector容器。
示例:
#include
using namespace cv;int main(int argc,char** argv) {//类型声明std::vector channels;Mat imageBlueChannel;Mat imageGreenChannel;Mat imageRedChannel;Mat srcImage = imread("1.jpg", 1);//flag=1,载入三通道图像if (!srcImage.data) {std::cout <<"图像读入失败!" <蓝色通道图像", imageBlueChannel);imshow("<2>绿色通道图像", imageGreenChannel);imshow("<3>红色通道图像", imageRedChannel);waitKey(0);return 0;
}
运行结果:(单通道图即分别为三个颜色通道的灰度图)
channels;split(srcImage, channels);//拆分imageBlueChannel = channels.at(0);//蓝通道imageGreenChannel = channels.at(1);//绿通道imageRedChannel = channels.at(2);//红通道imshow("蓝通道", imageBlueChannel);imshow("绿通道", imageGreenChannel);imshow("红通道", imageRedChannel);//对拆分的数据进行合并merge(channels, mergeImage);//合并imshow("合并后的图像", mergeImage);waitKey(0);return 0;
}运行结果: