2016-03-19 176 views
-1

C++:OpenCV中的凸函数函数的输出向量是什么?

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

OutputArray hull给出的描述如下:

hull - 输出凸包。它可以是指数的整数向量或点的向量。在第一种情况下,hull元素是原始数组中凸包点的基于0的索引(因为凸包点集合是原始点集合的一个子集)。在第二种情况下,hull元素本身就是凸包。

  1. 那么什么是指数的整数向量?
  2. 如果我使用输出数组作为vector<vector<int>>,我会得到什么?
  3. 我可以打印结果吗?
+0

如果您的输入是具有20个点的轮廓,并且输出是具有整数的矢量:0,7,12,17,那么您的凸包就是来自输入矢量的位置0,7,12,17处的点。 – Micka

回答

0

接听到您的具体问题:指数

  1. 整数向量(其中,索引从0开始)是表示从InputArray分分的索引是在该组凸包点。

  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

在上一个问题中,我想要的是在控制台上打印索引点。 –

+0

对于outputVector中的每个索引:std :: cout << inputContour [index] << std :: endl; – Micka

相关问题