возврат нескольких Mat из метода OpenCV

В образцах кода openCV в его документе я видел, что они просто передают мат в качестве ссылки и заполняют его.
Но у меня есть проблема в моем коде. когда я вызываю TestMethod, он их не заполняет.

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

return;
}

person Zhr Saghaie    schedule 09.09.2013    source источник
comment
попробуйте использовать Mat &a , Mat &b или используйте Mat* a , Mat* b , один из них должен работать, у меня нет времени его тестировать   -  person Engine    schedule 09.09.2013


Ответы (1)


Вас может смутить то, как OpenCV использует typedef для сокрытия ссылочных типов. Я бы посмотрел, как определены определения типов, такие как InputArray, вы увидите, что в них есть &, чтобы сделать их ссылочными типами. cv::Mat не является typedef, поэтому вам нужно объявить его как ссылку в списке аргументов функции.

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

    return;
}

В том виде, в котором вы это написали сейчас, a и b являются копиями переменных Mat, которые вы передали при вызове функции. Вы просто перезаписываете копии, которые освобождаются, когда функция возвращается.

person willtalmadge    schedule 09.09.2013