輪郭とその頂点座標を並べ直す

OpenCVのfindContourにおける輪郭と頂点座標の抽出順だが、色々と調べてもそのアルゴリズムが判らなかったので、以下のように考えて自分で並べ替えることにした。

輪郭(contour)

頂点が4つ以上の閉じた輪郭を対象とし、その面積(cv::contourAreaで取得できる)の降順でソートする

座標(coordinate)


頂点を含む矩形(cv::boundingRectで取得できる)を4つに分割(北西、北東、南西、南東それぞれ方角の名前つける)し、頂点がどの領域に含まれているかを調べる。

属する領域が決まったら、OpenCVの原点の領域(NE)から1、2、3、4という図の順で並べ替える。

これで一貫した結果を取得できると思うのだが。まずは実装してみよう。