当我尝试将包含 3 个 channel 的 IplImage 使用 cvCopy 到具有 4 个 channel 的 IplImage(稍后我需要额外的 channel )时,我得到的只是一条错误消息。

有没有另一种方法可以增加 IplImage 的 channel 数而不丢失它已经拥有的数据?

谢谢!

最佳答案

使用 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 不同,它将只执行必要的复制操作。

关于c++ - Opencv 将 3 channel IplImage 复制到 4 channel IplImage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6871978/

10-15 00:32
查看更多