在我的应用程序中,我有一个通过引用接收cv :: Mat对象的函数。 这是函数的声明:
void getChains(cv::Mat &img,std::vector<chain> &chains,cv::Mat &ch,char p=0,int sx=0,int sy=0);
这个函数是递归的,并且在main函数的第一次调用时并不需要aaa,所以我只是声明了一个空的aaa来将它传递给函数调用。在随后的递归调用函数中生成自己的ch Mat对象。
std::vector<chain> chains1;
cv::Mat aaa();
getChains(bin1,chains1,aaa);
但是,编译器返回错误:
main.cpp:75:错误:从'cv :: Mat(*)()'类型的临时类型初始化'cv :: Mat&amp;'类型的非const引用无效 aux.h:21:错误:传递'void getChains的参数3(cv :: Mat&amp;,std :: vector&gt;&amp;,cv :: Mat&amp;,char,int,int)'
如果我将aaa声明更改为
cv::Mat aaa=cv::Mat();
它编译没有问题。
该函数被传递一个二进制图像img,并获得所有像素组,其中像素粘在一起(链)并存储所有像素&#39;链矢量中的坐标。 openCV中是否已经存在一个类似的东西?
感谢
答案 0 :(得分:5)
这是一个函数定义:cv::Mat aaa();
。你真正想写的是cv::Mat aaa;