• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:findContoursの格納データ(点ベクトル?)

findContoursの格納データ(点ベクトル?

このQ&Aのポイント
  • findContoursの格納データとは、OpenCVの関数であるfindContoursによって検出された輪郭情報を表すデータです。
  • findContoursは、輪郭抽出を行い、各輪郭を点のベクトルとして格納します。
  • この点ベクトルのデータは、2次元配列として表現されます。1番目の要素は各輪郭の点の集合を表し、2番目の要素は各点の座標を表します。

質問者が選んだベストアンサー

  • ベストアンサー
  • myuki1232
  • ベストアンサー率57% (97/170)
回答No.1

findContours 関数の出力は、Contour"s" と複数形であることからもわかるように、「複数の」輪郭点群です。 つまり以下のようになっています。 vector<Point> → 輪郭点群 vector<vector<Point> > → 複数の輪郭点群 一つの画像内には、輪郭を持つ物体が複数ある可能性がありますから、このようなインターフェースになっています。 例えば、丸が1個、三角が1個が描いてある画像を入力とすると、2個の vector<Point> が得られることが期待されます。 何番目の輪郭点群が、どの物体に対応するか? は、この結果だけからはわかりません。 (上の例で言うと、丸が [0] なのか、[1] なのかはわかりません) なので、 ・パターンマッチングなどで、どの物体に対応するかを判定する ・必ず1個しか検出されないように入力画像を工夫する など、適当な方法を決める必要があります。 入力が Kinect ということであれば、例えば座標(最も画像中央に近いものを採用する)や面積(最も面積が大きい物を採用する)またはそれらの組み合わせを元に判定すると良いのではないでしょうか。

uekinda
質問者

お礼

回答ありがとうございます バタバタしてお礼が遅くなりました。すいません 確かに,画像全体の中に複数の輪郭があることに気付きませんでした。残念 スッキリしました。 ありがとうございます。 ちなみに Kinect は,深さ方向でデータをカットすることで所望のデータのみ残るようにしていますので,輪郭を特定する作業はないようにしています。 またよろしくおねがいします。