错误:类型为"cv::Mat&"的非常量引用初始化无效

error: invalid initialization of non-const reference of type 'cv::Mat&'

本文关键字:常量 非常 引用 初始化 无效 Mat 类型 cv 错误      更新时间:2023-10-16

下面是我的函数原型。

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的第一个参数改变为CCD_ 2也是如此。