如何访问vector <vector <point>&gt; opencv中的等高线如矩阵元素?</vector <point>

时间:2012-09-29 06:46:42

标签: c++ opencv matrix contour

我的问题是我不知道如何访问vector <vector <Point>>轮廓(在OpenCV上这是2D像矩阵)

我想这样做。如果Mat元素不在轮廓区域中,我想要抑制那些矩阵元素。为了做到这一点,我也需要知道轮廓元素。

3 个答案:

答案 0 :(得分:10)

第一个和第二个向量需要一个for循环。像这样:

vector< vector<Point> > contours;

for(int i= 0; i < contours.size(); i++)
{
    for(int j= 0; j < contours[i].size();j++) // run until j < contours[i].size();
    {
        cout << contours[i][j] << endl; //do whatever
    }
}

答案 1 :(得分:1)

如果我的情况如此迫切,我会更仔细地问我的问题。

如果我努力理解你的问题,你基本上想要考虑像素级别的轮廓。为此,您应该使用drawContour将轮廓绘制到空白矩阵中。然后比较两个矩阵或匹配该矩阵中的像素,以防您想要逐个像素。

答案 2 :(得分:0)

如果您需要所有点而不仅仅是边缘点,您可以使用drawContours(....,thickness=CV_FILLED)将此轮廓转移到虚拟垫上,然后您可以通过扫描虚拟垫来获得这些点。