У меня есть контуры 2 полигонов (как вектор cv :: Point2d).
Я хотел бы рассчитать площадь пересечения между ними
Какой самый простой способ получить его?
Большое спасибо!
Рон
Нарисуйте фигуры с CV_FILLED
в двух изображениях и И им. Площадь это: CountNonZero(bitwise_and(ShapeAImage,ShapeBImage))
,
Самый простой метод для кода выглядит так:
cv::Rect BoundingBox;
int IntersectionArea = 0;
//insert Min-Max X,Y to create the BoundingBox
for (every y inside boundingbox)
for (every x inside boundingbox)
if (PointPolygonTest(x,y,Contour1) && PointPolygonTest(x,y,Contour2))
IntersectionArea++;
Вы можете найти полигон пересечения с Библиотека Clipper
//create clipper polygons from your points
c.AddPolygons(subj, ptSubject);
c.AddPolygons(clip, ptClip);
c.Execute(ctIntersection, solution, pftNonZero, pftNonZero);