cv :: Mat aaa()之间的区别;和cv :: Mat aaa = cv :: Mat();

时间:2012-10-16 16:38:40

标签: c++ opencv

在我的应用程序中,我有一个通过引用接收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中是否已经存在一个类似的东西?

感谢

1 个答案:

答案 0 :(得分:5)

这是一个函数定义:cv::Mat aaa();。你真正想写的是cv::Mat aaa;