私のアプリケーションでは、参照によって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を宣言しました。後続の再帰呼び出しでは、関数は独自のchMatオブジェクトを生成します。
std::vector<chain> chains1;
cv::Mat aaa();
getChains(bin1,chains1,aaa);
ただし、コンパイラはエラーを返します。
main.cpp:75:エラー:タイプ'cv :: Mat()'の一時からのタイプ'cv :: Mat&'の非定数参照の無効な初期化aux.h:21:エラー:引数の受け渡し中3 of'void getChains(cv :: Mat&、std :: vector>&、cv :: Mat&、char、int、int)' </ p>
aaa宣言をに変更した場合
cv::Mat aaa=cv::Mat();
問題なくコンパイルされます。
関数にはバイナリイメージimgが渡され、ピクセルがくっついているすべてのピクセルグループ(チェーン)を取得し、すべてのピクセルの座標をチェーンベクトルに格納します。同様のことを行うopenCV内の既存の関数はおそらくすでにありますか?
ありがとう