【OpenCV】OpenCV函数精讲之 -- 通道合并:merge()函数

 2023-09-09 阅读 29 评论 0

摘要:merge()函数是将多个数组合并成一个多通道的数组。将一些孤立的单通道数组合并成一个多通道数组,创建一个由多个单通道阵列组成的多通道阵列。 merge()函数的C++有两个版本: void merge(const Mat& mv, size_tcount, OutputArray dst); void merge(

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

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/26157.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息