2016-03-19 15 views
-1

C++ aşağıdaki gibidir:OpenCV'de convexHull işlevinin çıktı vektörü nedir?

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

OutputArray hull verilen açıklaması:

hull - Çıkış dışbükey. Bu, indislerin bir tamsayı vektörü veya noktaların vektörüdür. İlk durumda, hull elemanları, orijinal dizideki dışbükey gövde noktalarının 0 temelli göstergeleridir (çünkü dışbükey gövde noktaları kümesi, orijinal nokta kümesinin bir alt kümesidir). İkinci durumda, hull elemanları, dışbükey gövde noktalarıdır.

  1. Yani endekslerinin tamsayı vektör nedir?
  2. Çıkış dizisini vector<vector<int>> olarak kullanırsam, içine ne girerim?
  3. Sonuçları yazdırabilir miyim?
+0

Eğer girişiniz 20 noktalı bir kontura sahipse ve çıkış tamsayıları olan bir vektör ise: 0,7,12,17 o zaman dışbükey kabuğunuz giriş vektörünüzden 0,7,12,17 pozisyonundadır. – Micka

cevap

0

özel sorulara cevaplama: (endeks 0'dan başlar) indisleri

  1. Tamsayı vektör InputArray noktalardan işaret gösterir endeksleri dışbükey noktalarının kümesi içindedir bulunmaktadır.

  2. Tam sayı veya nokta vektörünü kullanabilirsiniz. İlk durumda, noktaların giriş dizisi verilen gerçek noktaya erişime izin veren indeksleri alırsınız. İkinci durumda, çıktı dizisinden noktaların koordinatlarını doğrudan okuyabilirsiniz.

  3. Sonuçları yazdırmak istediğiniz yeri belirtmediğiniz için bu soru tamamen açık değildir. Bir görüntüde göstermek istediğinizi varsayalım, dışbükey gövdeyi polilerle çizebilirsiniz. Özel olarak (Daha fazla bilgi için cv::polylines bakınız):

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

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

çıkış vektörü bir tamsayı vektör, böylece endeksleri olduğunu varsayarak, konsol noktalarının koordinatları yazdırmak için

+0

Son soruda ne istediğim konsoldaki endeks noktalarını yazdırmaktır. OutputVector'daki her indeks için –

+0

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

İlgili konular