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