ошибка: неверная инициализация неконстантной ссылки типа ‘cv :: Mat & amp;’

Ниже мой прототип функции.

void devectorize(Mat &vec,Mat mask,Mat& img);

Я получаю сообщение об ошибке ниже, когда пытаюсь вызвать эту функцию в моем коде. В чем будет причина?

Mat V;

for(int i=0;i<V.cols;i++)
{
devectorize(V.col(i),mask,E_img); //Error in this line
}
error: invalid initialization of non-const reference of type 'cv::Mat&' from an rvalue of type 'cv::Mat'
utils.h:11:6: error: in passing argument 1 of 'void devectorize(cv::Mat&, cv::Mat, cv::Mat&)'

3

Решение

Вы не можете привязать неконстантную ссылку к временному. В вашем случае первый аргумент для devectorize — это неконстантная ссылка, а возвращаемое значение из V.col(i) является временным. Этот код будет работать

for (int i = 0; i < V.cols; i++)
{
Mat tmp = V.col(i);
devectorize(tmp, mask, E_img);
}

так изменил бы первый параметр devectorize на const Mat&,

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector