openCV中2个多边形的交叉区域

时间:2013-07-23 12:50:46

标签: c++ opencv geometry polygons

我有2个多边形的轮廓(作为cv :: Point2d的矢量)。

我想计算它们之间的交叉区域

获得它的最简单方法是什么?

非常感谢!

罗恩

3 个答案:

答案 0 :(得分:9)

在两个图像中使用CV_FILLED绘制形状并使用AND。面积为:CountNonZero(bitwise_and(ShapeAImage,ShapeBImage))

答案 1 :(得分:2)

最简单的代码编码方法如下:

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 :(得分:2)

您可以找到与Clipper library

的交叉点多边形
//create clipper polygons from your points
c.AddPolygons(subj, ptSubject);
c.AddPolygons(clip, ptClip);
c.Execute(ctIntersection, solution, pftNonZero, pftNonZero);

然后calc area of this polygon