【问题标题】:How to convert matrix to InpuArrayOfArrays in OpenCV?如何在 OpenCV 中将矩阵转换为 InpuArrayOfArrays?
【发布时间】:2013-06-16 19:14:08
【问题描述】:

假设我有一排点

Mat_<Point> src(1,4);
src << Point(border,border), Point(border,h-border), Point(w-border,h-border), Point(w-border,h-border);

现在我想将此行传递给接受InputArrayOfArrayspolylines() 函数。在我的情况下,它应该是一个数组的数组。

如何将一行点转换为这种类型?

【问题讨论】:

    标签: c++ arrays opencv type-conversion


    【解决方案1】:

    您可以将此函数的another 形式用于C 数组。第一个数组的大小应为 1,内部数组的大小应为 4,并包含您的点。

    您也可以尝试相同的方法并传递 vector&lt;vector&lt;Point&gt; &gt; 而不是 C 数组。

    在 OpenCV 中,ArrayOfArrays 通常表示某物的向量(Mat 或其他向量)。'

    更新:InputArrayOfArrays 也只是 InputArray 的 typedef。所以你可以尝试传递一个vector&lt;Point&gt;。它不适用于需要 InputArrayOfArrays 的每个函数,但它应该适用于 polylines()。我没有测试过,所以请提供你的结果。

    【讨论】:

    • 所以我有Mat,为什么不适合?
    • 在 OpenCV 中 Mat 是一个数组,而不是数组的数组。
    • 什么 OpenCV 库函数代表数组数组? vector 不是 OpenCV 的。
    • OpenCV 也使用向量。 Array of array 是向量的向量或 Mats 的向量。
    【解决方案2】:

    也许有人会发现它作为一个起点很有用。我花了将近一整天的时间寻找解决方案。最后我可以用折线和填充多边形绘制。我不得不承认这有点烦人。

    t2 包含 3 个点。 所以这会给 pt 加 3 分。

    vector<Point> pt;
    for(int ao=0; ao<t2.size(); ao++){
        pt.push_back( t2.at(ao) );
    }
    polylines(image,pt,false,Scalar(255,255,255),2,150,0);
    

    这要使用 fillPoly 只是为了填充一个三角形

     Point pt[1][3];
    
      //set one point into pt  matrix
    
     pt[0][0].x = yourvalue_x;   
     pt[0][0].y = yourvalue_y;
    
      //set onother point into pt  matrix
     pt[0][1].x = yourvalue_x;
     pt[0][1].y = yourvalue_y;
    
      //set onother point into pt  matrix
     pt[0][2].x = yourvalue.x;
     pt[0][2].y = yourvalue.y;
    
     //adding 2 times (i have one triangle ) but 
     ppt  can  contains many more polygons 
    
     //const Point* ppt[2] = {pt[0], pt[1], ... };
    
     //i used only one triangle as a test 
     const Point* ppt[2] = {pt[0], pt[0]};
     int npt[] = {3, 3};
    
     fillPoly(atom_image, ppt, npt, 1, (255,0,255));
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多