Windows フォームで OpenCV を使用しようとしています。グローバル cv::Mat オブジェクトを作成し、他の関数が使用するオブジェクトを期待しています。ただし、グローバル cv::Mat オブジェクトを初期化して関数を終了/返すたびに、グローバル cv::Mat オブジェクトの値が不明な理由で自動的に変更されます。
1 つのサンプル コード スニペットは次のようになります。
private: cv::Mat *cvImage;
何らかの理由で、cv::Mat を返す decode() という関数を作成しました。
void copy(){cvImage = &decode();}
cvImage は上記のコードでは正しい値を取得できません。通常、data、dataend、datalimit、datastart、rows は 0 または予期しない値です。
cv::Mat img などのローカル変数を使用してすべてを実行しようとしても cvImage = &img;
、関数が終了または復帰するたびに、cvImage の値も予期せず変更されます。
どうしてこうなったんだろう??