std::vector<std::vector<cv::Point>> fillContour(const std::vector<std::vector<cv::Point>> & _contours)
{
// sort as x descent y descent.
std::vector<std::vector<cv::Point>> contours(_contours);
for(size_t i = 0; i<contours.size(); ++i)
{
std::vector<cv::Point> sub(contours[i]);
std::sort(sub.begin(), sub.end(), [&](cv::Point & A, cv::Point & B) {
if (A.x == B.x)
return A.y < B.y;
else
return A.x < B.x;
});
contours[i] = sub;
}
// restore as pairs with same ys.
std::vector<std::vector<std::pair<cv::Point, cv::Point>>> contours_pair;
for (size_t i = 0; i < contours.size(); ++i)
{
std::vector<std::pair<cv::Point, cv::Point>> pairs;
for (size_t j = 0; j < contours[i].size(); ++j)
{