merge()函数是将多个数组合并成一个多通道的数组。将一些孤立的单通道数组合并成一个多通道数组,创建一个由多个单通道阵列组成的多通道阵列。
merge()函数的C++有两个版本:
void merge(const Mat& mv, size_tcount, OutputArray dst);
void merge(InputArrayOfArray mv, OutputArray dst);
opencv copyto?参数说明:
第一个参数:const Mat& mv,填需要被合并的输入矩阵或vector容器的阵列,这个mv参数中所有的矩阵必须有着一样的尺寸和深度。
第二个参数:size_tcount,当mv为一个空白的C数组时,代表输入矩阵的个数,必须大于1。
opencv copyto函数?第三个参数:dst,输出矩阵,和mv[0]拥有一样的尺寸和深度,并且通道的数量是矩阵阵列中的通道的总数。
第i个输入数组的元素被视为mv[i]。C一般用其中的Mat::at()方法对某个通道进行存取,即channels.at()。
Mat::at()方法返回一个引用到指定的数组元素,这样修改其中一个,另一个也会随之改变。
opencv函数手册?下边是一个merge()函数示例(关于通道分离,参考《OpenCV3编程入门》通道分离:split()函数):
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>using namespace cv;
using namespace std;void main(){vector<Mat> 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);//对拆分的通道数据合并Mat mergeImage; //定义合并的输出矩阵merge(channels, mergeImage);//显示合并的效果imshow("【mergeImage】", mergeImage);waitKey();
}
原始图 | BlueChannel |
GreenChannel | RedChannel |
mergeImage |
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态