如何从函数返回多个图像?

时间:2012-10-22 16:49:52

标签: opencv

我觉得我正在采用从函数中返回图像的效率不高的方法。

如果我使用,

void processImg(IplImage* srcImg, IplImage* dstImg1, IplImage* dstImg2)
{
....processing image
cvCopy(..., dstImg1);
cvCopy(..., dstImg2);
}

对于上面的例子,我该如何返回两张图片?

如果我使用IplImage * processImg(IplImage * srcImg,IplImage * dstImg1,IplImage * dstImg2),它只能返回一个图像。

如何根据这两个功能返回图像?

1 个答案:

答案 0 :(得分:1)

你在做什么。您正在传递指向两个dst图像的指针。这意味着如果您修改这些图像,则实际上是在修改原始图像。

如果这不是你想要的,你真的想要返回两个图像,你可以探索其他数据结构,如列表或链表。您可以将两个图像放在该结构中并返回结构。

std::list<IplImage *> processImg(IplImage* srcImg)
{
    std::list<IplImage *> image_list;

    //....processing image

    //create two ipl images pointers
    IplImage *dstImg1, *dstImg2;

    //allocate memory for the ipl images

    //copy the data into images
    cvCopy(..., &dstImg1);
    cvCopy(..., &dstImg2);

    //add the images to list
    image_list.push_back(dstImg1);
    image_list.push_back(dstImg2);

    return image_list;
 }