如何将 3 个 opencv IplImage 合二为一?

Posted

技术标签:

【中文标题】如何将 3 个 opencv IplImage 合二为一?【英文标题】:How to join 3 open cv IplImages into one? 【发布时间】:2010-11-19 18:41:42 【问题描述】:

所以我有这样的代码:

    IplImage* redchannel = cvCreateImage(cvGetSize(destination), 8, 1);
                    IplImage* greenchannel = cvCreateImage(cvGetSize(destination), 8, 1);
                    IplImage* bluechannel = cvCreateImage(cvGetSize(destination), 8, 1);
cvSplit(source, bluechannel, greenchannel, redchannel, NULL);
// code...
//now I need to join them back

如何将 bluechannel、greenchannel 和 redchannel 加入到某个 IplImage* 目的地?

【问题讨论】:

【参考方案1】:

void cvMerge(const CvArr* src0, const CvArr* src1, const CvArr* src2, const CvArr* src3, CvArr* dst);

Here is the documentation.

编辑:

来自文档: 您必须致电:

cvMerge(bluechannel, greenchannel, redchannel, NULL, target);

假设您的目标图像也只有 3 个通道。

【讨论】:

hm.. 如果我有 3 张图片,如何获得 4 张图片? 如何创建这样的目标?为什么 IplImage* 目的地 = cvCreateImage(cvSize(w, h),IPL_DEPTH_8U, 3);工作不正常? “工作不正确”非常不具体,你的意思是什么?

以上是关于如何将 3 个 opencv IplImage 合二为一?的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV——IplImage

将灰度、彩色和精巧的图像(3)全部复制到一个大的 IplImage:Opencv 错误?

将 OpenCV IplImage 渲染到 QGLWidget

从 Mat 元素到 IplImage 的 opencv 转换 *

如何将IplImage转换为GLubyte数组?

OpenCV 3.0中IplImage* 转cv::Mat