2016-03-19 26 views
-1

C++次のようOpenCVのconvexHull関数の出力ベクトルは何ですか?

void 
convexHull(InputArray points, 
      OutputArray hull, 
      bool clockwise=false, 
      bool returnPoints=true); 
OutputArray hull

上の説明である:

hull - 出力凸包。これは、インデックスの整数ベクトルか点のベクトルです。最初のケースでは、hull要素は元の配列の凸包点の0ベースのインデックスです(凸包点集合は元の点集合のサブセットなので)。 2番目のケースでは、hullの要素は凸包点です。

  1. インデックスの整数ベクトルとは何ですか?
  2. 出力配列をvector<vector<int>>として使用すると、どのようになりますか?
  3. 結果を印刷できますか?あなたの特定の質問に答える
+0

入力が20ポイントの等高線で、出力が整数のベクトル:0,7,12,17の場合、凸包は入力ベクトルの0,7,12,17の位置の点です。 – Micka

答えて

0

:(インデックスは0から始まる)インデックスの

  1. 整数ベクトルはInputArrayポイントからどの点を示す指標である凸包点の集合です。

  2. ポイントの整数ベクトルまたはベクトルのベクトルを使用できます。最初のケースでは、ポイントの入力配列が与えられたときに実際のポイントにアクセスするためのインデックスを取得します。 2番目のケースでは、出力配列からポイントの座標を直接読み取ることができます。

  3. この質問は、結果をどこに印刷するかについて言及していないので、完全にはっきりしません。それをイメージに表示すると仮定すると、ポリラインで凸包を描くことができます。具体的には(詳細については、cv::polylines見て):

    void cv::polylines (
        InputOutputArray  img, 
        InputArrayOfArrays pts, 
        bool     isClosed, 
        const Scalar &  color, 
        int     thickness = 1, 
        int     lineType = LINE_8, 
        int     shift = 0 
    ) 
    

    をコンソール内の点の座標を印刷するには、インデックスしたがって、出力ベクトルは整数のベクトルであると仮定すると:

    size_t hull_size = hull.size(); 
    for (size_t i = 0; i < hull_size; i++) 
    { 
        std::cout << points[hull[i]] << std::endl; 
    } 
    
+0

最後に、私が望むのは、コンソール上のインデックスポイントを印刷することです。 outputVector内の各インデックスの –

+0

:std :: cout << inputContour [index] << std :: endl; – Micka

関連する問題