错误:'cv :: Mat&'类型的非const引用的初始化无效

时间:2013-08-31 13:06:34

标签: c++ opencv reference pass-by-reference argument-passing

以下是我的功能原型。

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&)'

1 个答案:

答案 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&