opencv 图像操作

来源:互联网 发布:cacti for windows 编辑:程序博客网 时间:2024/05/29 08:04

一、多通道图像的分离

http://blog.csdn.net/XiaoXiangGuanZhu/article/details/50322895

1、通道分离: split()函数 
split函数用于将一个多通道数组分离成几个单通道数组。这里的array 按语境翻译为数组或者阵列。split函数的C++版本有两个原型, 分别是: 
• c ++: void split( const Mat& src, Mat*mvbegin); 
• C++ : void split(InputArray m ,Outpu从nayOfArrays mv); 
变量介绍如下: 
· 第一个参数, InputArray 类型的m 或者const Mat&类型的src ,填我们需要进行分离的多通道数组。 
· 第二个参数, OutputArrayOfArrays 类型的mv , 填函数的输出数组或者输出 
的vector 容器。 
split 函数分割多通道数组转换成独立的单通道数组,公式如下: 
mv[c] (I)= src(I )c

2、通道合并: merge()函数 
merge() 函数是split() 函数的逆向操作将多个数组合并成一个多通道的数组。它通过组合一些给定的单通道数组,将这些孤立的单通道数组合并成一个多通道的数组,从而创建出一个由多个单通道阵列组成的多通道阵列。它有两个基于C十+的函数原型如下。 
• C++: void merge(const Mat* mv, size_tcount, Ou阳山rray dst) 
• C++: void merge( In putArrayO队rrays mv,OutputArray dst) 
变量介绍如下。 
· 第一个参数, mv 。填需要被合井的输入矩阵或vector 容器的阵列,这个mv 参数中所有的矩阵必须有着一样的尺寸和深度。 
· 第二个参数, count。 当mv 为一个空白的C 数组时,代表输入矩阵的个数,这个参数显然必须大于1。 
· 第三个参数, dst。即输出矩阵,和mv[0]拥有一样的尺寸和深度,井且通道的数量是矩阵阵列中的通道的总数。 
函数解析如下。 
merge 函数的功能是将一些数组合并成一个多通道的数组。关于组合的细节,输出矩阵中的每个元素都将是输出数组的串接。其中, 第i 个输入数组的元素被视为mv[i] 。 C 一般用其中的Mat: :at()方法对某个通道进行存取,也就是这样用:channels.at(0) 。 
这里的Mat: :at()方法返回一个引用到指定的数组元素。注意是引用,相当于两者等价,也就是修改其中一个,另一个也会随之改变。 



// mark 一下, 待续

0 0
原创粉丝点击