Давайте проанализируем неправильную строку:
const Point *elementPoints [1] = { contourElement.at(0) };
Вы объявили contourElement
как vector <vector<Point> >
, что означает, что contourElement.at(0)
возвращает vector<Point>
, а не const cv::Point*
.Итак, это первая ошибка.
В конце вам нужно сделать что-то вроде:
vector<Point> tmp = contourElement.at(0);
const Point* elementPoints[1] = { &tmp[0] };
int numberOfPoints = (int)tmp.size();
Позже, назовите это как:
fillPoly (contourMask, elementPoints, &numberOfPoints, 1, Scalar (0, 0, 0), 8);