从 OpenCV 方法返回多个 Mat

Zhr*_*aie 1 opencv mat

在其文档中的 openCV 代码 sapmles 中,我看到他们只是将 Mat 作为参考传递并填充它。
但我的代码有问题。当我调用 TestMethod 时,它不会填充它们。

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

return;
}
Run Code Online (Sandbox Code Playgroud)

wil*_*dge 5

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

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

    return;
}
Run Code Online (Sandbox Code Playgroud)

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