在我的应用程序中,我有一个通过引用接收 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 中是否已经有一个现有的功能可以做类似的事情?
谢谢