2017年2月4日土曜日

OpenCVSharp:Mat変数の渡し方に注意

ちょっと初歩的なところで躓いたのでメモ書き。OpenCVSharpのプログラムで、
Mat mat = new Mat()
methodA(mat);
methodB(mat);
みたいなことをしました。各メソッドはほぼ同じことしてます。が、後者のメソッドが思ったように動かないケースに遭遇し、ちょっと格闘しました。

Matは基本参照渡し
結論(解決策)は、Matは基本参照渡しだということ。つまり、methodA内で変数matを処理したら、呼び出し元でも反映されているということ。つまり、上記の例では、Aに渡されるmatとBに渡されるmatは別物です。
もし、同じmatを渡したいなら、closeメソッドでコピーを作ってそれを渡しましょう。

0 件のコメント:

コメントを投稿