我有2个多边形的轮廓(作为cv :: Point2d的矢量)。
我想计算它们之间的交叉区域
获得它的最简单方法是什么?
非常感谢!
罗恩
答案 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);