Opencv 如何处理多通道矩阵

Opencv 如何处理多通道矩阵,opencv,Opencv,我有一个500x500 Mat对象(图像的绿色平面)。 我已经创建了一个500x500x3(其中3是通道数)zero Mat对象。 是否有openCV 2.4.3函数来复制新“零”Mat对象第二个通道中的绿色平面 感谢无效混合频道(常量向量和srcv、向量和dstv、常量int*fromTo、int-npairs) void mixChannels(const vector<Mat>& srcv, vector<Mat>& dstv, const int*

我有一个500x500 Mat对象(图像的绿色平面)。 我已经创建了一个500x500x3(其中3是通道数)zero Mat对象。 是否有openCV 2.4.3函数来复制新“零”Mat对象第二个通道中的绿色平面

感谢

无效混合频道(常量向量和srcv、向量和dstv、常量int*fromTo、int-npairs)
void mixChannels(const vector<Mat>& srcv, vector<Mat>& dstv, const int* fromTo, int npairs)
有关此功能的更多信息,请访问:

过程1:

int from_to[] = {0,1}
mixChannels(Green_plane,1,Created_mat,3,from_to,1);

流程2(lil冗长)

Mat绿色平面//您已经将此矩阵作为图像的绿色平面
//创建一个3通道矩阵,所有条目设置为零
创建的矩阵=矩阵::零(行、列、CV_8UC3);
//它是一个包含上述3个通道矩阵的3个平面的图像向量数组
矢量bgr_平面;
//将3通道矩阵划分为3个单通道矩阵
拆分(创建的网格、bgr平面);
//取绿色平面,它是向量数组bgr_平面中包含的3个矩阵中的中间矩阵,并将已经给定的绿色矩阵复制到它
bgr_平面[1]=绿色_平面。克隆();
//将单通道矩阵的向量合并为三通道矩阵
合并(bgr_平面,创建_mat)//编辑
//现在创建的_mat的绿色通道与给定的绿色矩阵(绿色_平面)相同,其余两个平面仍设置为零
为4个频道编辑..

vector<Mat> each_channel;
split(Mat_4_channel,each_channel);

//accessing each pixel of each channel
each_channel[0].at<uchar>(row,col);//1st channel
each_channel[1].at<uchar>(row,col);//2nd channel
each_channel[2].at<uchar>(row,col);//3rd channel
each_channel[3].at<uchar>(row,col);//4th channel
每个信道的矢量;
分割(Mat_4_通道,每个_通道);
//访问每个通道的每个像素
每个_通道[0]。at(行,列)//第一频道
每个_通道[1]。at(行,列)//第二频道
每个_通道[2]。at(行,列)//第三频道
每个_通道[3]。at(行,列)//第四频道

您能逐一解释一下您的代码实际上做了什么吗?非常感谢你!我唯一的问题是“合并”被下划线为错误(重载)。你觉得怎么样?好的…第一个代码中有一个错误,你必须换成合并。现在没事了,多谢了。现在我有另一个问题:我如何在像素级访问创建的_mat???类似这样的东西:在(ii,jj)[k]上的ACreated_mat.at;
vector<Mat> each_channel;
split(Mat_4_channel,each_channel);

//accessing each pixel of each channel
each_channel[0].at<uchar>(row,col);//1st channel
each_channel[1].at<uchar>(row,col);//2nd channel
each_channel[2].at<uchar>(row,col);//3rd channel
each_channel[3].at<uchar>(row,col);//4th channel