Площадь пересечения 2-х полигонов в openCV

У меня есть контуры 2 полигонов (как вектор cv :: Point2d).

Я хотел бы рассчитать площадь пересечения между ними

Какой самый простой способ получить его?

Большое спасибо!

Рон

6

Решение

Нарисуйте фигуры с CV_FILLED в двух изображениях и И им. Площадь это: CountNonZero(bitwise_and(ShapeAImage,ShapeBImage)),

8

Другие решения

Самый простой метод для кода выглядит так:

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++;
2

Вы можете найти полигон пересечения с Библиотека Clipper

//create clipper polygons from your points
c.AddPolygons(subj, ptSubject);
c.AddPolygons(clip, ptClip);
c.Execute(ctIntersection, solution, pftNonZero, pftNonZero);

затем Вычислить площадь этого многоугольника

1
По вопросам рекламы [email protected]