从 OpenCV 方法返回多个 Mat



在它的文档中的openCV代码中,我看到他们只是简单地将垫子作为引用传递并填充它。
但是我的代码有问题。当我调用TestMethod时,它不会填充它们。

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

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

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

按照你现在的编写方式,a 和 b 是你在调用函数时传递的 Mat 变量的副本。您只是覆盖函数返回时正在解除分配的副本。

相关内容

  • 没有找到相关文章

最新更新