将两个RGB图像组合成一个6通道图像 - openCV

时间:2012-05-13 22:17:39

标签: c++ opencv

我正在使用openCV,我需要将两个三通道RGB图像组合成一个6通道图像。图像是Iplimages,我想我需要将它们转换为垫子,但即便如此,我也不确定如何将它们组合起来。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

split将图像拆分为单个通道图像数组,merge将它们按任意顺序放回原处。还有mixchannels(),这是两个更有效但更复杂的组合

理论上opencv适用于任意数量的通道,但我怀疑许多功能仅适用于1或3(即灰色或“正常”颜色)

答案 1 :(得分:0)

OpenCV支持的图像格式最多有4个通道(RGBA),因此您很可能需要将图像数据转换为Mat,您最多可以定义CV_MAX_CN(32默认)频道。

您可以使用Mat::convertTo来确保您的图片格式正确,然后使用mixChannels

mixChannels(const vector<Mat>& src, vector<Mat>& dst, const int* fromTo, int npairs)

你的映射看起来像:

S1[0] -> D[0]
S1[1] -> D[1]
S1[2] -> D[2]
S2[0] -> D[3]
S2[1] -> D[4]
S2[2] -> D[5]

int from_to[] = { 0,0, 1,1, 2,2, 0,1, 1,4, 2,5 };