以下是我的功能原型。
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&)'
答案 0 :(得分:4)
您不能将非const引用绑定到临时引用。在您的情况下,devectorize的第一个参数是非const引用,V.col(i)
的返回值是临时的。这段代码可行
for (int i = 0; i < V.cols; i++)
{
Mat tmp = V.col(i);
devectorize(tmp, mask, E_img);
}
所以将devectorize的第一个参数更改为const Mat&
。