3

下面是我的函数原型。

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

1 回答 1

4

您不能将非常量引用绑定到临时对象。在您的情况下, devectorize 的第一个参数是非常量引用,返回值 fromV.col(i)是临时的。这段代码可以工作

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

将 devectorize 的第一个参数更改为const Mat&.

于 2013-08-31T13:11:02.040 回答