2

在我的应用程序中,我有一个通过引用接收 cv::Mat 对象的函数。这是函数的声明:

     void getChains(cv::Mat &img,std::vector<chain> &chains,cv::Mat &ch,char p=0,int sx=0,int sy=0);

这个函数是递归的,在第一次从主函数调用时并不真的需要 aaa,所以我只是声明了一个空的 aaa 来将它传递给函数调用。在随后的递归调用中,函数会生成自己的 ch Mat 对象。

std::vector<chain> chains1;
cv::Mat aaa();

getChains(bin1,chains1,aaa);

但是,编译器返回错误:

main.cpp:75: 错误:从'cv::Mat (*)()' aux.h:21 的临时类型的'cv::Mat&' 类型的非常量引用的无效初始化:错误:在传递参数3 of 'void getChains(cv::Mat&, std::vector >&, cv::Mat&, char, int, int)'</p>

如果我将 aaa 声明更改为

        cv::Mat aaa=cv::Mat();

它编译没有问题。

该函数传递一个二进制图像 img 并获取所有像素组,其中像素粘在一起(链)并将所有像素的坐标存储在链向量中。openCV 中是否已经有一个现有的功能可以做类似的事情?

谢谢

4

1 回答 1

5

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

于 2012-10-16T16:43:50.623 回答