上节中我们讲解了如何使用addWeighted函数进行图像混合,以及如何将ROI和addWeighted函数结合起来,对指定区域进行图像混合操作。
而为了更好地观察一些图像材料的特征,有时需要对RGB三个颜色通道的分量进行分别显示和调整。通过OpenCV的split和merge方法可以很方便地达到目的。
这一节,我们会详细介绍这两个互为“冤家”的函数。首先来看看进行通道分离的split函数。
1. 通道分离:split()函数
split函数用于将一个多通道数组分离成几个单通道数组。这里的array按语境翻译为数组或者阵列。
这个函数的C++版本有两个原型,分别是:
- C++:void split(const Mat& src,Mat* mvbegin);
- C++:void split(InputArray m,OutputArrayOfArrays mv);
变量介绍如下:
- 第一个参数,InputArray类型的m或者const Mat&类型的src,填我们需要进行分离的多通道数组。
- 第二个参数,OutputArrayOfArrays类型的mv,填函数的输出数组或者输出的vector容器。
split函数分割多通道数组转换成独立的单通道数组,公式如下:
m v [ c ] ( I ) = s r c ( I ) c mv[c](I)=src(I)_{c} mv[c](I)