【OpenCV】OpenCV函数精讲之 -- 通道分离:split()函数

split函数用于将一个多通道数组分离成几个单通道数组。

split函数的C++版本有两个原型,分别是:

void split(const Mat& src, Mat*mvbegin);
void split(InputArray m, OutputArrayOfArrays mv);

参数含义如下:

第一个参数:InputArray m(const Mat& src),填我们需要进行分离的多通道数组。

第二个参数:OutputArrayOfArrays mv,填函数的输出数组或者输出的vector容器。

 split函数分割多通道数组转换成独立的单通道数组,公式如下:

                                                                      mv[c](I)=src(I)_{c}

 下边是一个示例:

#include 
#include 
#include 

using namespace cv;
using namespace std;

void main(){
    vector channels;
    Mat imageBlueChannel;
    Mat imageGreenChannel;
    Mat imageRedChannel;
    Mat srcImage4 = imread("mogu.jpg");
    imshow("【原始图】", srcImage4);

    //把一个3通道图像转换成3个单通道图像
    split(srcImage4, channels);
    imageBlueChannel = channels.at(0);
    imageGreenChannel = channels.at(1);
    imageRedChannel = channels.at(2);

    //显示单通道图像
    imshow("【BlueChannel】", imageBlueChannel);
    imshow("【GreenChannel】", imageGreenChannel);
    imshow("【RedChannel】", imageRedChannel);

    waitKey();
}

代码解析:

上述代码先做了相关的类型声明,然后把载入的3通道图像转换成3个单通道图像,放到vector类型的channels中,接着进行引用赋值。

OpenCV的BGR色彩空间(Blue、Green、Red,蓝、绿、红),其中channels.at(0)表示引用取出的是蓝色分量,channels.at(1)表示引用取出的是绿色分量,channels.at(2)表示引用取出的是红色分量。


运行结果:

【OpenCV】OpenCV函数精讲之 -- 通道分离:split()函数_第1张图片

                                               原始图

【OpenCV】OpenCV函数精讲之 -- 通道分离:split()函数_第2张图片

                                          BlueChannel

【OpenCV】OpenCV函数精讲之 -- 通道分离:split()函数_第3张图片

                                       GreenChannel

【OpenCV】OpenCV函数精讲之 -- 通道分离:split()函数_第4张图片

                                        RedChannel

你可能感兴趣的:(OpenCV,OpenCV实战-从入门到精通)