Ниже мой прототип функции.
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&)'
Вы не можете привязать неконстантную ссылку к временному. В вашем случае первый аргумент для 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&
,
Других решений пока нет …