OpenCV——提取图片的各通道以及合并多个单通道为一个图片

将多通道数组分割成多个单通道数组:

  • C++ CV_EXPORTS void split(const Mat& src, Mat* mvbegin)
  • C++ void split(InputArray m, OutputArrayOfArrays mv)
  • Python: cv2.split(m[, mv])
    参数
    src:多通道数组
    mvbegin:输出数组
    mv:输出向量

split()函数不仅可以分离RGB颜色通道,还可以分离任意的多通道Mat对象。

示例:

Mat img = imread("stack.jpg");
Mat channels[3];
split(img, channels);

OpenCV——提取图片的各通道以及合并多个单通道为一个图片_第1张图片

OpenCV——提取图片的各通道以及合并多个单通道为一个图片_第2张图片

OpenCV——提取图片的各通道以及合并多个单通道为一个图片_第3张图片

OpenCV——提取图片的各通道以及合并多个单通道为一个图片_第4张图片


把将多个数组合并生成一个多通道数组(数组的顺序就是合并数组的通道顺序):

  • CV_EXPORTS void merge(const Mat* mv, size_t count, OutputArray dst)
    参数:
    mv:要合并的输入数组,所有数组必须由同样大小和depth
    count:当mv是C数组时输入数组的个数
    dst:输出数组,和每个输入数组有相同的大小和depth,通道数等于count

  • CV_EXPORTS_W void merge(InputArrayOfArrays mv, OutputArray dst)
    参数:
    mv:要合并的矩阵的输入向量
    dst:输出数组,和每个输入数组有相同的大小和depth,通道数等于输入数组的数目

示例:

Mat channel[3];
merge(channel, 3, img);

你可能感兴趣的:(OpenCV)