Opencv将3通道IplImage复制到4通道IplImage

时间:2011-07-29 10:48:52

标签: c++ opencv iplimage

当我尝试使用cvCopy时,一个由3个通道组成的IplImage到一个带有4个通道的IplImage(后面我需要额外的通道),我得到的只是一条错误信息。

是否有另一种方法可以增加IplImage的通道数而不会丢失它已经拥有的数据?

谢谢!

2 个答案:

答案 0 :(得分:7)

使用cvMixChannels,如下所示:

CvMat * src; // your source image
CvMat * dst // your destination image
CvMat * zeros = cvCreateMat(src->cols, src->rows, CV_8UC1);
cvSet(zeros, cvScalar(0, 0, 0, 0));
CvArr * input[] = { src, zeros };
int from_to[] = { 0,0, 1,1, 2,2, 3,3 };
cvMixChannels(input, 2, &dst, 1, from_to, 4);

与cvSplit和cvMerge不同,它只会执行必要的复制操作。

答案 1 :(得分:2)

我不确定,我建议的方式是最简单的方法:

  1. 您可以先使用cvSplit()将图像分割为3个单独的图像 (每个频道一个)
  2. 然后你重新组合一个有3个通道的4个通道+你自己的通道 将使用函数cvMerge()....
  3. 添加

    请查看此处的文档,

    于连