我觉得我正在采用从函数中返回图像的效率不高的方法。
如果我使用,
void processImg(IplImage* srcImg, IplImage* dstImg1, IplImage* dstImg2)
{
....processing image
cvCopy(..., dstImg1);
cvCopy(..., dstImg2);
}
对于上面的例子,我该如何返回两张图片?
如果我使用IplImage * processImg(IplImage * srcImg,IplImage * dstImg1,IplImage * dstImg2),它只能返回一个图像。
如何根据这两个功能返回图像?
答案 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;
}