0

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

如果我使用,

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

对于上面的例子,我怎样才能返回这两个图像呢?

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

如何根据这两个函数返回图像?

4

1 回答 1

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;
 }
于 2012-10-22T18:47:59.363 回答