【发布时间】:2012-10-24 00:50:39
【问题描述】:
我觉得我在做从函数返回图像的效率不高的方法。
如果我使用,
void processImg(IplImage* srcImg, IplImage* dstImg1, IplImage* dstImg2)
{
....processing image
cvCopy(..., dstImg1);
cvCopy(..., dstImg2);
}
对于上面的例子,我怎样才能返回两个图像呢?
如果我使用 IplImage*processImg(IplImage* srcImg, IplImage* dstImg1, IplImage* dstImg2),它只能返回一个图像。
如何根据这两个函数返回图片?
【问题讨论】:
-
您在问题中列出的函数需要指向 dstImg1 和 dstImg2 的指针,如果您同时填写这两个(就像您使用 cvCopy 所做的那样),那么它们将在函数返回后保留其内容并且您拥有有效地“返回”了他们两个。您能否更具体地说明问题所在?
-
我是否以正确的方式从函数中返回两个图像?我看到一些帖子这不是编程的好习惯。
-
C 和 C++ 不能有超过 1 个返回参数,如果是关于 C 或 C++ 的帖子,我会很感兴趣...
-
我忘记了刚才在哪里看到的。我给出的例子实际上是有效的。我只是想知道这是否是一个好方法。例如,如果我们想返回多个值,最好的方式是通过引用传递等......
-
我是 OpenCV 的新手,所以不确定我是否能提供最好的建议,但这里有一些值得考虑的想法: 1. 返回一个包含这两者的数组或 IplImage* 类型向量图片。 2. 根据您需要稍后使用图像的方式,您可以 cvAdd 它们(尽管这是一种破坏性的过程)或创建具有多个通道的矩阵(例如,对于 2 个 RGB 图像,您将创建一个具有 6 个通道的输出矩阵( 2xRGB),但这意味着制作一个具有两个图像中最大尺寸的矩阵,如果两个图像具有不同的尺寸,则会浪费“空间”)......
标签: opencv