首先解释下什么是多通道图像,一个普通的彩色图像的每个像素点是由RGB三种颜色构成的,那么这种图像就是3通道图像,其中单独的R色、G色和B色都分别称为一个单通道图像。opencv中的Mat类型实际上可以理解为一种多维多通道的矩阵,如果一个普通的彩色图像读进来后赋值给一个Mat类型的对象M,那么这个M就是一个二维数组,这个二维数组中的每个元素都是一个含有三个RGB值得数据,那这个M就是一个二维三通道的矩阵。
在opencv2中有一个函数可以将一个三通道的图像中的每个通道单独提取出来,那就是split函数。
C++: void split(const Mat& mtx, Mat* mv)
C++: void split(const Mat& mtx, vector<Mat>& mv)
有这两种定义形式:
参数mtx – 源多通道数组.
参数mv – 目标单通道数组或者单通道数组向量. 在函数中的第一个参数中通道的数和第二个参数数组大小要一致 .提出出来的单通道分别以二维单通道的形式存放在数组mv中。
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include<vector>
using namespace