Моя проблема в том, что я не знаю, как получить доступ vector <vector <Point>>
контур (это 2D как матрица в OpenCV)
Я хочу сделать это. Если элемент Mat не состоит в области контуров, я хочу подавить элементы матрицы. Для этого мне нужно знать элемент contours.
Если бы моя ситуация была настолько срочной, я бы задал свой вопрос более тщательно.
Если я изо всех сил пытаюсь понять ваш вопрос, вы в основном хотите рассмотреть контур на уровне пикселей. Для этого вы должны нарисовать контур в пустую матрицу с помощью drawContour. А затем сравните две матрицы или сопоставьте пиксель в этой матрице, если хотите, чтобы пиксель за пикселем.
Вам нужен цикл 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
}
}
Если вам нужны все точки, а не только крайние точки, вы можете использовать drawContours(....,thickness=CV_FILLED)
чтобы сбросить этот контур на фиктивном коврике, вы можете получить эти точки путем сканирования фиктивного коврика.