从OpenCV方法返回多个Mat

时间:2013-09-09 05:56:01

标签: opencv mat

在openCV代码中的sapmles文件中,我看到他们只是将Mat作为参考传递并填充它。
但我的代码中存在问题。当我打电话给TestMethod时,它不会填充它们。

void TestMethod(Mat a, Mat b)
{
a = imread("img1.jpg");
b = imread("img2.jpg");

return;
}

1 个答案:

答案 0 :(得分:4)

您可能会对OpenCV如何使用typedef隐藏引用类型感到困惑。我会查找如何定义类型InputArray之类的typedef,你会发现它们中有一个&来使它们成为引用类型。 cv::Mat不是typedef,因此您需要将其声明为函数参数列表中的引用。

void TestMethod(Mat& a, Mat& b)
{
    a = imread("img1.jpg");
    b = imread("img2.jpg");

    return;
}

现在编写它的方式,a和b是调用函数时传递的Mat变量的副本。您只是覆盖函数返回时释放的副本。