我的问题是我不知道如何访问vector <vector <Point>>
轮廓(这是 OpenCV 上的二维矩阵)
我想做这个。如果 Mat 元素不包含在轮廓区域中,我想抑制该矩阵元素。为了做到这一点,我也需要知道轮廓元素。
第一个和第二个向量都需要一个 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
}
}
如果我的情况如此紧急,我会更仔细地问我的问题。
如果我努力理解你的问题,你基本上想考虑像素级的轮廓。为此,您应该使用 drawContour 将轮廓绘制到空白矩阵中。然后比较两个矩阵或匹配该矩阵中的一个像素,以防您需要逐个像素。
如果您需要所有点而不仅仅是边缘点,您可以使用drawContours(....,thickness=CV_FILLED)
将此轮廓转储到虚拟垫上,然后您可以通过扫描虚拟垫来获得这些点。