この度、ラベリング機能を提供するOpenCvSharp.Blobを、P/Invokeによる実装をやめ、すべてC#(マネージドコード)で実装しなおしました。これは以下の理由からです。
- ●特にCvBlobインスタンスの取り回しが悪い。リスト側のCvBlobsが解放されるとCvBlobも解放されてしまうので、永続化しづらい。
- ●上記に関連しメモリリークや異常終了が多発。ネイティブリソース解放周りの改善が、cvblobの実装上と難敵"GC"の兼ね合いでかなり苦しい。
変更は、2.4.5 (19 Jan., 2014)版から取り入れています。NuGetも更新済みです。
https://github.com/shimat/opencvsharp/releases
今回の変更は、出力のblobは変わらないように作ったつもりです。ただし若干APIに変更があるので、以前のコードとの互換性は失われています。より良くなったはずなのでご理解いただければと思います。
以下では、変更点を絡めながら改めて使い方を紹介します。