OpenCV cvFindContour()メソッドは、8連結近傍規則に従って連結成分を取得します。これを4接続の隣接ルールに変更する方法はありますか?接続性をチェックするときにコーナーセルは考慮されません。
どうやらMathematicaはCornerNeighbors->False
SOでここに示されている単純なものでこれを行っているようです。OpenCVでこれを行う方法はありますか?cv * .hファイル(かなり毛深い)の関数定義を実際に変更したとしても...ポインタはありますか?
OpenCV cvFindContour()メソッドは、8連結近傍規則に従って連結成分を取得します。これを4接続の隣接ルールに変更する方法はありますか?接続性をチェックするときにコーナーセルは考慮されません。
どうやらMathematicaはCornerNeighbors->False
SOでここに示されている単純なものでこれを行っているようです。OpenCVでこれを行う方法はありますか?cv * .hファイル(かなり毛深い)の関数定義を実際に変更したとしても...ポインタはありますか?
これは不可能だと思います。opencvへのコード変更を提案し、これを可能にするフラグを追加することを検討できます。現在このファイルにあります:
すべての隣接を決定するicvCodeDeltasと呼ばれる配列があります。使用場所を確認して、
static const CvPoint icvCodeDeltas4[4] = { {1, 0}, {0, -1}, {-1, 0}, {0, 1} };
これは、たとえばCV_NEIGHBOURS_CROSSが指定されている場合に使用されます。次に、opencv-communityに追加を依頼します。これは、オープンソースの仕組みです。たぶん、迅速で汚い、恥ずべき修正は次のようになります。
virtual CvPoint icvCodeDeltas[8];
icvCodeDeltas = { {1, 0}, {0, -1}, {-1, 0}, {0, 1}, {1, 0}, {0, -1}, {-1, 0}, {0, 1} };
しかし、私はそれをテストしませんでした、そしてこれが「静的」と「定数」を回避するかどうかわかりませんので注意してください;)